summaryrefslogtreecommitdiff
path: root/guix/import/json.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2018-08-20 15:11:14 +0200
committerLudovic Courtès <ludo@gnu.org>2018-08-20 16:32:18 +0200
commit2766282f5a91f4a2739cfc3fce0dee7c7ec9e5cc (patch)
tree5fea0000274e984c0f61903dbb5650bda5d5ee6b /guix/import/json.scm
parenta50eed201bf470b3bd124a2983bcea3453ec698f (diff)
downloadgnu-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.scm14
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)))