Sasík je služba, která v pravidelném intervalu automatizovaně stahuje data (seznam známek) z informačního systému SAS různých škol. Uživatele (studenti/rodiče) pak notifikuje pokud přibydou známky nové.
Doteď Sasík pro přihlašování se k IS SAS používal přímo knihovnu cURL. Letos však nastal jeden problém, kdy jedna ze škol hned po přihlášení začala posílat redirect hlavičku http, se kterou si stávající kód nedokázal poradit. Podíval jsem se mu tedy na zoubek.
Jak to tak bývá, uteklo hodně vody, od chvíle byl tenhle kód napsán. Kdo někdy psal přímo pro cURL, byl určitě rád, když mu to nějak fungovalo a už na to moc nešahal. Zkusil jsem pár neúspěšných chmatů. Pak jsem si ale uvědomil, že doba pokročila – že tady máme knihovny s mnohem příjemnějším rozhraním. Narážím na Symfony komponentu Guzzle. Zatím jsem o ní jenom četl, ale řekl jsem si, že to s ní zkusím. Jak dlouho zabere implementace do projektu, který nepoužívá žádný framework a composer už vůbec?
Stačilo:
- ve složce s projektem spustit příkaz “composer require symfony/guzzle”
- do skriptů zkopírovat řádek s autoloadingem “require ’vendor/autoload.php’”
- začít používat novou knihovnu s krásným API
Tohle trvalo tedy jen chvilinku (i s kódem do jedné hodiny). Navíc je teď projekt připraven i na další knihovny z composeru, čehož jsem hned využil s knihovnou phpQuery, kterou již dlouho používám na získávání dat z načtené stránky (přístup k DOM podobně jako v jQuery; ale dnes jsou už hezčí knihovny). V rámci průběžného refaktoringu jsem ještě pár věcí přeházel a dokonce jsem odstranil bugy, o kterých jsem ani nevěděl a které byly pro některé uživatele zásadní (vlastně jim Sasík nikdy nemohl fungovat :-D). Tím se to celé natáhlo na 5 hodin. Ale aspoň to teď trochu vypadá. Podívejte se sami.