GitHub API: Získání času modifikace Gistu

Dobrovolník ke všem pluginům v jejich seznamu přidal popis a datum poslední aktualizace – díky! Já jsem všechny autory pluginů obeslal pull-requesty s úpravou na Adminer 5. A tím se většina datumů poslední aktualizace stala neplatná.

Aktualizovat to celé ručně by byl nesmysl, tak jsem využil toho, že většina pluginů je k dispozici na GitHubu, některé na Gistu. Tím pádem se dá využít GitHub API a datum aktualizace získat přes něj. Např. pro Gist se to dá udělat takhle:

<?php
// zdrojem je normální URL s Gistem
if (preg_match('~^https://gist.github.com.*/(.+)$~', $url, $match)) {
    $gist = github_api("gists/$match[1]");
    echo $gist->history[0]->committed_at; // $gist->updated_at includes comments
}

function github_api($path) {
    $context = stream_context_create(array('http' => array(
        'header' => array("User-Agent: PHP"),
    )));
    return json_decode(file_get_contents("https://api.github.com/$path", false, $context));
}
?>

Při kladení požadavků musíme nastavit hlavičku User-Agent (na libovolnou hodnotu), což je takový chyták. Pro lepší zpracování chyb je vhodné přidat do kontextu ještě ignore_errors, díky čemuž získáme i stránky s chybami místo pouhého false. Hlavičky zprávy potom získáme v proměnné $http_response_header. Z nich se dozvíme třeba to, že u veřejných API (jako je tohle) má GitHub docela přísné limity – nějakých 60 požadavků za hodinu. Pokud chceme víc, dá se to nejjednodušeji udělat posláním tokenu, který si vygenerujeme v nastavení. Pak jen do pole s hlavičkami přidáme Authorization: Bearer ghp_... (nezapomenout na Bearer).

Jakub Vrána, Seznámení s oblastí, 19.3.2025, diskuse: 0 (nové: 0)

Vložit komentář

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2025 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.