aboutsummaryrefslogtreecommitdiff
path: root/guix/http-client.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-03-17 15:04:56 +0100
committerLudovic Courtès <ludo@gnu.org>2021-03-17 23:10:19 +0100
commitdbfc6a32bb60d2841e300c99e1b39c87254ece1d (patch)
tree19912980519ba7bff93557f70f166dc24458d7ec /guix/http-client.scm
parentc81eeabb99f89f2b7bf1417bfbf992ba47af02a5 (diff)
downloadguix-dbfc6a32bb60d2841e300c99e1b39c87254ece1d.tar
guix-dbfc6a32bb60d2841e300c99e1b39c87254ece1d.tar.gz
http-client: 'http-fetch' and 'http-fetch/cached' accept #:log-port.
* guix/http-client.scm (http-fetch, http-fetch/cached): Add #:log-port and honor it.
Diffstat (limited to 'guix/http-client.scm')
-rw-r--r--guix/http-client.scm11
1 files changed, 9 insertions, 2 deletions
diff --git a/guix/http-client.scm b/guix/http-client.scm
index 2d7458a56e..4b4c14ed0b 100644
--- a/guix/http-client.scm
+++ b/guix/http-client.scm
@@ -79,6 +79,7 @@
(keep-alive? #f)
(verify-certificate? #t)
(headers '((user-agent . "GNU Guile")))
+ (log-port (current-error-port))
timeout)
"Return an input port containing the data at URI, and the expected number of
bytes available or #f. If TEXT? is true, the data at URI is considered to be
@@ -94,6 +95,8 @@ When VERIFY-CERTIFICATE? is true, verify HTTPS server certificates.
TIMEOUT specifies the timeout in seconds for connection establishment; when
TIMEOUT is #f, connection establishment never times out.
+Write information about redirects to LOG-PORT.
+
Raise an '&http-get-error' condition if downloading fails."
(let loop ((uri (if (string? uri)
(string->uri uri)
@@ -128,7 +131,7 @@ Raise an '&http-get-error' condition if downloading fails."
308) ; permanent redirection
(let ((uri (resolve-uri-reference (response-location resp) uri)))
(close-port port)
- (format (current-error-port) (G_ "following redirection to `~a'...~%")
+ (format log-port (G_ "following redirection to `~a'...~%")
(uri->string uri))
(loop uri)))
(else
@@ -276,6 +279,7 @@ returning."
(define* (http-fetch/cached uri #:key (ttl (%http-cache-ttl)) text?
(write-cache dump-port)
(cache-miss (const #t))
+ (log-port (current-error-port))
(timeout 10))
"Like 'http-fetch', return an input port, but cache its contents in
~/.cache/guix. The cache remains valid for TTL seconds.
@@ -284,7 +288,9 @@ Call WRITE-CACHE with the HTTP input port and the cache output port to write
the data to cache. Call CACHE-MISS with URI just before fetching data from
URI.
-TIMEOUT specifies the timeout in seconds for connection establishment."
+TIMEOUT specifies the timeout in seconds for connection establishment.
+
+Write information about redirects to LOG-PORT."
(let ((file (cache-file-for-uri uri)))
(define (update-cache cache-port)
(define cache-time
@@ -306,6 +312,7 @@ TIMEOUT specifies the timeout in seconds for connection establishment."
cache-port)
(raise c))))
(let ((port (http-fetch uri #:text? text?
+ #:log-port log-port
#:headers headers #:timeout timeout)))
(cache-miss uri)
(mkdir-p (dirname file))