Ostatnio trafił mi się „Mad girlfriend bug” – czyli sytuacja w której software mówi iż wszystko jest OK ale widać, iż nie. W moim przypadku był to skrypt w CI. Wszystkie kroki były zielone a jednak testy nie przechodziły. W końcu okazało się, iż winna jest jedna flaga, a raczej jej brak. W tym poście chciałbym przedstawić zestaw flag do curla, które zapobiegną podobnym przypadkom.
curl
curl to chyba najpopularniejszy klient HTTP na świecie. Jest dostępny zarówno jako niskopoziomowa biblioteka w C (libcurl) jak i narzędzie CLI. jeżeli twoje urządzenie pobiera coś z sieci najprawdopodobniej używa curla.
--fail
Tej flagi zabrakło w moim skrypcie. Odpowiada ona za to, iż w przypadku błędu serwera (kod >= 400) curl zwróci 22, inaczej dostaniemy 0 i wszystko będzie zachowywać się tak jakby nic się nie stało.
curl -f -XPOST https://detektywi.it curl: (22) The requested URL returned error: 406--silent
Domyślnie curl pokaże nam pasek postępu oraz wypisze błędy połączenie o ile wystąpią. Jednak w większości przypadków w skryptach nie potrzebujemy tych informacji dlatego warto je wyłączyć aby nie zaśmiecać logów.
--show-error
Z jednej strony tryb cichy (--silent) jest przydatny z drugiej jeżeli pojawi się błąd to warto móc go przeczytać. Aby mimo wszystko wyświetlić błędy należy dodać tę flagę.
--location
Jeśli serwer zwraca przekierowanie, curl sam z siebie nie podąży za nim. Nazwa bierze się z nagłówka w którym znajduje się adres przekierowania.
curl detektywi.it # nic nie wyświetli bo nie skorzysta z przekierowania na https curl -l detektywi.it--insecure
Jeśli z jakiegoś powodu próbujemy połączyć się z witryną której certyfikat nie jest zaufany to musimy użyć tej flagi.
curl --location --silent --show-error --fail === curl -lsSf
Oczywiście curl oferuje o wiele więcej opcji (obecnie 242) o których można poczytać w dokumentacji albo na blogu autora.