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
).
Vložit komentář

