~ruther/guix-local

d18b79fed895b9ca5cdb3a9a68c8e02bdaef30d8 — Mathieu OTHACEHE 9 years ago 11f3885
import: github: Catch HTTP 403 error during fetch.

* guix/import/github.scm (json-fetch*): Catch 403 HTTP error that may be
  raised if a github token has not been set.

Signed-off-by: Mathieu OTHACEHE <m.othacehe@gmail.com>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
1 files changed, 6 insertions(+), 3 deletions(-)

M guix/import/github.scm
M guix/import/github.scm => guix/import/github.scm +6 -3
@@ 32,10 32,13 @@

(define (json-fetch* url)
  "Return a representation of the JSON resource URL (a list or hash table), or
#f if URL returns 404."
#f if URL returns 403 or 404."
  (guard (c ((and (http-get-error? c)
                  (= 404 (http-get-error-code c)))
             #f))                       ;"expected" if package is unknown
                  (let ((error (http-get-error-code c)))
                    (or (= 403 error)
                        (= 404 error))))
             #f))     ;; "expected" if there is an authentification error (403),
                      ;; or if package is unknown (404).
    ;; Note: github.com returns 403 if we omit a 'User-Agent' header.
    (let* ((port   (http-fetch url))
           (result (json->scm port)))