Ludovic Courtès
dd1141eba2
http-client: Improve error reporting.
...
* guix/http-client.scm (http-fetch): Change message in &message
condition to include URI, CODE, and the reason phrase.
2017-01-10 15:34:11 +01:00
Ludovic Courtès
17cff9c662
http-client: Add #:verify-certificate? to 'http-fetch'.
...
* guix/http-client.scm (http-fetch): Add #:verify-certificate? parameter
and pass it to 'open-connection-for-uri'.
2016-11-12 13:04:45 +01:00
Ludovic Courtès
2535635f18
Use (ice-9 binary-ports) instead of (rnrs io ports).
...
This reduces the closure of (guix ui) from 123 to 106 modules.
* guix/derivations.scm: Use (ice-9 binary-ports) instead of (rnrs io
ports).
(map-derivation)[substitute-file]: Use 'read-string' instead of
'get-string-all'.
* guix/ftp-client.scm: Likewise.
* guix/hash.scm: Likewise.
* guix/http-client.scm: Likewise.
* guix/pki.scm (ensure-acl, current-acl): Likewise.
* guix/scripts/archive.scm (authorize-key)[read-key]: Likewise.
* guix/scripts/authenticate.scm (read-canonical-sexp)
(read-hash-data): Likewise.
* guix/scripts/download.scm: Likewise.
* guix/scripts/offload.scm (register-gc-root, remove-gc-roots)
(send-files): Likewise.
* guix/scripts/publish.scm (lazy-read-file-sexp): Likewise.
* guix/scripts/refresh.scm: Likewise.
* guix/scripts/substitute.scm (check-acl-initialized): Likewise.
* guix/serialization.scm (read-maybe-utf8-string): Likewise.
* guix/scripts/hash.scm (guix-hash): Use 'force-output' instead of
'flush-output-port'.
* guix/store.scm (process-stderr): Likewise.
* guix/tests.scm: Likewise.
* guix/utils.scm: Use (ice-9 binary-ports) and autoload (rnrs io ports)
for 'make-custom-binary-input-port'.
2016-10-19 15:54:10 +02:00
Ludovic Courtès
409e4ac6e3
http-client: No 'setvbuf' for non-file ports.
...
* guix/http-client.scm (http-fetch): Do not call 'setvbuf' on non-file
ports.
2016-03-16 11:27:37 +01:00
Ludovic Courtès
d262a0f36b
http-client: Add #:keep-alive? parameter.
...
* guix/http-client.scm (http-fetch): Add #:keep-alive? parameter and
pass it to 'http-get' or 'http-get*'.
2016-03-14 23:34:33 +01:00
Ludovic Courtès
a4e7083da3
http-client: 'http-client/cached' uses unique cache file names.
...
* guix/http-client.scm (cache-file-for-uri): New procedure.
(http-fetch/cached): Use it. Remove 'directory' variable.
[update-cache]: Make the 'dirname' of FILE.
2016-02-25 17:23:29 +01:00
Ludovic Courtès
e72f50a787
http-client: 'http-fetch/cached' updates the cache atomically.
...
* guix/http-client.scm (http-fetch/cached)[update-cache]: Use
'with-atomic-file-output' instead of 'call-with-output-file'.
2016-02-25 16:49:11 +01:00
Ludovic Courtès
793a43f409
http-client: Work around < http://bugs.gnu.org/22273 >.
...
* guix/http-client.scm (read-header-line): New procedure. Use it.
2016-01-06 23:08:22 +01:00
Ludovic Courtès
1c63dafce6
http-client: Fix erroneous comment.
...
* guix/http-client.scm: Fix Guile version number in comment for Guile
commit 5a10e41.
2016-01-06 23:08:22 +01:00
Ricardo Wurmus
0cb5bc2cff
http-client: Support basic authentication.
...
* guix/http-client.scm (http-fetch): Add Authorization header to request
when the URI contains userinfo.
2015-12-21 15:24:44 +01:00
Ludovic Courtès
25d188ce12
http-client: 'http-fetch' converts strings to URIs.
...
* guix/http-client.scm (http-fetch): Use 'string->uri' if URI is a
string. Fixes a regression introduced in 8a5063f
.
2015-11-29 17:46:11 +01:00
Ludovic Courtès
8a5063f777
http-client: 'http-fetch' and 'http-fetch/cached' support HTTPS.
...
* guix/http-client.scm (http-fetch): Use 'open-connection-for-uri', to
support HTTPS.
2015-11-26 21:07:25 +01:00
Ludovic Courtès
cbaf0f11dd
http-client: '%http-cache-ttl' is really a parameter.
...
Fixes a typo in commit 739ab68
that made it a procedure returning a
parameter.
* guix/http-client.scm (%http-cache-ttl): Turn into a parameter.
2015-10-21 14:43:34 +02:00
Ludovic Courtès
739ab68bac
http-client: Add 'http-fetch/cached'.
...
* guix/utils.scm (cache-directory): New procedure.
* guix/http-client.scm (%http-cache-ttl): New variable.
(http-fetch/cached): New procedure.
2015-10-17 14:42:01 +02:00
Ludovic Courtès
15d5ca1356
http-client: Backport Guile fix for 'read-chunk-header'.
...
Fixes the wrong-type-arg exception initially reported
at <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19976#5 >
by Ricardo Wurmus <rekado@elephly.net>.
* guix/http-client.scm (read-chunk-header): Backport Guile commit 53b8d5f.
2015-09-26 11:13:50 +02:00
Ludovic Courtès
6b02a448d2
http-client: Backport delimited input port fix from Guile.
...
* guix/http-client.scm (make-delimited-input-port): Backport Guile
commit 5a10e41.
Monkey-patch 'make-delimited-input-port' for any Guile <= 2.0.11.
2015-09-10 23:14:16 +02:00
Ludovic Courtès
1c01a30d66
http-client: Remove redundant import clause.
...
* guix/http-client.scm: Remove redundant #:use-module (guix utils).
2015-09-10 23:14:16 +02:00
Ludovic Courtès
005c8fc6e0
http-client: Remove monkey patching for 2.0.5.
...
* guix/http-client.scm (read-response-body*): Remove.
(http-fetch): Remove hacks for 2.0.5.
2015-05-10 11:07:51 +02:00
Ludovic Courtès
7623848343
download: Work around Guile small-receive-buffer bug.
...
Previously, code using directly (guix build download) was still affected
by <http://bugs.gnu.org/15368 >. This includes source derivations, the
'guix download' command, and (guix gnu-maintenance).
'guix substitute' was unaffected since it used (guix http-client), which
already had the fix.
* guix/http-client.scm (open-socket-for-uri): Remove.
(http-fetch): Remove #:buffered? argument to 'open-socket-for-uri';
use 'setvbuf' instead.
* guix/scripts/substitute.scm (fetch): Likewise.
* guix/build/download.scm (open-socket-for-uri): New procedure, taken
from guix/http-client.scm, but without the #:buffered? parameter.
2015-05-06 10:31:11 +02:00
Ludovic Courtès
0cc0095f3c
http-client: Add workaround for HTTP pipelining on Guile <= 2.0.9.
...
Reported by Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>.
* guix/http-client.scm (make-delimited-input-port): New procedure.
Install it in (web response) for Guile <= 2.0.9.
2015-04-08 21:41:04 +02:00
Ludovic Courtès
776463ba9f
http-client: Monkey-patch 'make-chunked-input-port' on Guile <= 2.0.11.
...
Fixes <http://bugs.gnu.org/19976 >.
* guix/http-client.scm (when-guile<=2.0.5): Rename to...
(when-guile<=2.0.5-or-otherwise-broken): ... this.
(%web-http): New variable.
Monkey-patch 'make-chunked-input-port' when %WEB-HTTP defines
'read-chunk-body'.
2015-03-03 22:58:45 +01:00
Ludovic Courtès
c28606bd1d
http-client: Update backport of chunked encoding support to Guile 2.0.5.
...
* guix/http-client.scm (read-chunk, read-chunk-body)
[when-guile<=2.0.5]: Remove.
(make-chunked-input-port) [when-guile<=2.0.5]: Update to Guile commit
00d3ecf2.
2015-03-03 22:58:45 +01:00
Mark H Weaver
04dec194d8
download: Handle HTTP redirects to relative URI references.
...
Fixes <http://bugs.gnu.org/19840 >.
Reported by Ricardo Wurmus <rekado@elephly.net>.
* guix/build/download.scm: On Guile 2.0.11 or earlier, redefine the http
"Location" header to accept relative URIs.
(resolve-uri-reference): New exported procedure.
(http-fetch): Use 'resolve-uri-reference' to resolve redirections.
* guix/http-client.scm (http-fetch): Use 'resolve-uri-reference'
2015-02-19 03:32:22 -05:00
Ludovic Courtès
a68d976b66
download: Enlarge your receive buffer.
...
* guix/build/download.scm (open-connection-for-uri): Remove call to
'setsockopt'.
* guix/http-client.scm (open-socket-for-uri)[rmem-max, buffer-size]: New
variables. Add call to 'setsockopt'.
2014-05-23 22:19:37 +02:00
Ludovic Courtès
706e9e575d
substitute-binary: Gracefully handle HTTP GET errors.
...
* guix/http-client.scm (&http-get-error): New condition type.
(http-fetch): Raise it instead of using 'error'.
* guix/scripts/substitute-binary.scm (fetch) <http>: Wrap body into
'guard' form; gracefully handle 'http-get-error?' conditions.
2014-03-01 15:38:11 +01:00
Ludovic Courtès
7db3ff4a29
utils: Add `guile-version>?', and use it.
...
This fixes Guile version comparisons when (version) has a
vendor-specific suffix.
Reported by Andreas Enge <andreas@enge.fr>.
* guix/utils.scm (guile-version>?): New procedure.
* tests/utils.scm ("guile-version>? 1.8", "guile-version>? 10.5"): New
tests.
* guix/scripts/substitute-binary.scm (fetch, progress-report-port): Use
`guile-version>?' instead of `version>?'.
* guix/http-client.scm (when-guile<=2.0.5, http-fetch): Likewise.
2013-08-23 15:51:36 +02:00
Ludovic Courtès
3b8258c569
Rename (guix web) to (guix http-client).
...
* guix/web.scm: Rename to...
* guix/http-client.scm: ... this.
* guix/gnu-maintenance.scm, guix/scripts/substitute-binary.scm,
Makefile.am, po/POTFILES.in: Update accordingly.
2013-07-14 16:44:15 +02:00