function api_url_request($url) { $contents = file_get_contents($url, false, stream_context_create(array('http' => array('header' => "User-Agent: phpBB/1.0\r\n")))); $sub_request_result = array(); // Check headers for pagination links if (!empty($http_response_header)) { foreach ($http_response_header as $header_element) { // Find Link Header which gives us a link to the next page if (strpos($header_element, 'Link: ') === 0) { list($head, $header_content) = explode(': ', $header_element); foreach (explode(', ', $header_content) as $links) { list($url, $rel) = explode('; ', $links); if ($rel == 'rel="next"') { // Found a next link, follow it and merge the results $sub_request_result = api_url_request(substr($url, 1, -1)); } } } } } if ($contents === false) { return false; } $contents = json_decode($contents); if (isset($contents->message) && strpos($contents->message, 'API Rate Limit') === 0) { throw new RuntimeException('Reached github API Rate Limit. Please try again later' . "\n", 4); } return $sub_request_result ? array_merge($sub_request_result, $contents) : $contents; }
function api_request($query) { return api_url_request("https://api.github.com/{$query}?per_page=100"); }