$storage = new \GuzzleHttp\Subscriber\Cache\CacheStorage(new \Doctrine\Common\Cache\FilesystemCache(__DIR__ . '/cache')); CacheSubscriber::attach($client, ['storage' => $storage]); $data = json_decode($client->get('https://www.drupal.org/api-d7/node.json?type=project_release&taxonomy_vocabulary_7=100&field_release_build_type=static')->getBody()); $projects = []; $conflict = []; class UrlHelper { public static function prepareUrl($url) { return str_replace('https://www.drupal.org/api-d7/node', 'https://www.drupal.org/api-d7/node.json', $url); } } while (isset($data) && isset($data->list)) { $results = array_merge($results, $data->list); if (isset($data->next)) { $data = json_decode($client->get(UrlHelper::prepareUrl($data->next))->getBody()); } else { $data = NULL; } } foreach ($results as $result) { $nid = $result->field_release_project->id; $core = (int) substr($result->field_release_version, 0, 1); // Skip D6 and older. if ($core < 7) { continue; } try { if (!isset($projects[$nid])) { $project = json_decode($client->get('https://www.drupal.org/api-d7/node.json?nid=' . $nid)->getBody()); $projects[$nid] = $project->list[0];