diff options
author | Ludovic Courtès <ludo@gnu.org> | 2018-08-20 15:11:14 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2018-08-20 16:32:18 +0200 |
commit | 2766282f5a91f4a2739cfc3fce0dee7c7ec9e5cc (patch) | |
tree | 5fea0000274e984c0f61903dbb5650bda5d5ee6b /guix/import/json.scm | |
parent | a50eed201bf470b3bd124a2983bcea3453ec698f (diff) | |
download | gnu-guix-2766282f5a91f4a2739cfc3fce0dee7c7ec9e5cc.tar gnu-guix-2766282f5a91f4a2739cfc3fce0dee7c7ec9e5cc.tar.gz |
import: github: Request API v3 in the 'Accept' header.
* guix/import/json.scm (json-fetch): Add #:headers argument and honor it.
* guix/import/github.scm (latest-released-version): Pass #:headers to
'json-fetch'.
Diffstat (limited to 'guix/import/json.scm')
-rw-r--r-- | guix/import/json.scm | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/guix/import/json.scm b/guix/import/json.scm index 3f2ab1e3ea..4f96a513df 100644 --- a/guix/import/json.scm +++ b/guix/import/json.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 David Thompson <davet@gnu.org> ;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org> +;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,17 +26,20 @@ #:export (json-fetch json-fetch-alist)) -(define (json-fetch url) +(define* (json-fetch url + ;; Note: many websites returns 403 if we omit a + ;; 'User-Agent' header. + #:key (headers `((user-agent . "GNU Guile") + (Accept . "application/json")))) "Return a representation of the JSON resource URL (a list or hash table), or -#f if URL returns 403 or 404." +#f if URL returns 403 or 404. HEADERS is a list of HTTP headers to pass in +the query." (guard (c ((and (http-get-error? c) (let ((error (http-get-error-code c))) (or (= 403 error) (= 404 error)))) #f)) - ;; Note: many websites returns 403 if we omit a 'User-Agent' header. - (let* ((port (http-fetch url #:headers '((user-agent . "GNU Guile") - (Accept . "application/json")))) + (let* ((port (http-fetch url #:headers headers)) (result (json->scm port))) (close-port port) result))) |