Esempio n. 1
0
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;
}
Esempio n. 2
0
function api_request($query)
{
    return api_url_request("https://api.github.com/{$query}?per_page=100");
}