* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) */ namespace PrestaShop\Module\AutoUpgrade\Services; use PrestaShop\Module\AutoUpgrade\Exceptions\DistributionApiException; class DistributionApiService { public const API_URL = 'https://api.prestashop-project.org'; /** * @throws DistributionApiException * * @return array */ public function getPhpVersionRequirements(string $targetVersion): array { $response = @file_get_contents(self::API_URL . '/prestashop'); if (!$response) { throw new DistributionApiException('Error when retrieving Prestashop versions from Distribution api', DistributionApiException::API_NOT_CALLABLE_CODE); } else { $data = json_decode($response, true); foreach ($data as $versionInfo) { if ($versionInfo['version'] === $targetVersion) { return [ 'php_min_version' => $versionInfo['php_min_version'], 'php_max_version' => $versionInfo['php_max_version'], ]; } } } throw new DistributionApiException('No version match in Distribution api for ' . $targetVersion, DistributionApiException::VERSION_NOT_FOUND_CODE); } }