~ruther/guix-local

2de227af4bca7204e93f48d52555d576c25f1ca9 — Ludovic Courtès 12 years ago 06d275f
download: Provide a 'User-Agent' field in HTTP requests.

Fixes <http://bugs.gnu.org/16703>.
Reported by Raimon Grau <raimonster@gmail.com>.

* guix/build/download.scm (http-fetch)[headers]: New variable.
  Pass it as #:headers or #:extra-headers to 'http-get' and
  'http-get*'.
1 files changed, 13 insertions(+), 4 deletions(-)

M guix/build/download.scm
M guix/build/download.scm => guix/build/download.scm +13 -4
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 201,6 201,12 @@ which is not available during bootstrap."
        (string>? (micro-version) "7")
        (string>? (version) "2.0.7")))

  (define headers
    ;; Some web sites, such as http://dist.schmorp.de, would block you if
    ;; there's no 'User-Agent' header, presumably on the assumption that
    ;; you're a spammer.  So work around that.
    '((User-Agent . "GNU Guile")))

  (let*-values (((connection)
                 (open-connection-for-uri uri))
                ((resp bv-or-port)


@@ 210,11 216,14 @@ which is not available during bootstrap."
                 ;; version.  So keep this compatibility hack for now.
                 (if post-2.0.7?
                     (http-get uri #:port connection #:decode-body? #f
                               #:streaming? #t)
                               #:streaming? #t
                               #:headers headers)
                     (if (module-defined? (resolve-interface '(web client))
                                          'http-get*)
                         (http-get* uri #:port connection #:decode-body? #f)
                         (http-get uri #:port connection #:decode-body? #f))))
                         (http-get* uri #:port connection #:decode-body? #f
                                    #:headers headers)
                         (http-get uri #:port connection #:decode-body? #f
                                   #:extra-headers headers))))
                ((code)
                 (response-code resp))
                ((size)