import: json: Accept '#:http-fetch' in 'json-fetch'.

For example, supplying 'http-fetch/cached' would enable caching.

* guix/import/json.scm (json-fetch): Add '#:http-fetch' argument.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Philip McGrath 2022-05-18 14:10:55 -04:00 committed by Ludovic Courtès
parent ae533e3084
commit 9a47fd56dd
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 6 additions and 3 deletions

View File

@ -35,13 +35,16 @@
json->scheme-file))
(define* (json-fetch url
#:key
(http-fetch http-fetch)
;; Note: many websites returns 403 if we omit a
;; 'User-Agent' header.
#:key (headers `((user-agent . "GNU Guile")
(Accept . "application/json"))))
(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. HEADERS is a list of HTTP headers to pass in
the query."
the query. HTTP-FETCH is called to perform the request: for example, to
enable caching, supply 'http-fetch/cached'."
(guard (c ((and (http-get-error? c)
(let ((error (http-get-error-code c)))
(or (= 403 error)