diff options
author | Jakub Kądziołka <kuba@kadziolka.net> | 2020-02-23 12:06:31 +0100 |
---|---|---|
committer | Jakub Kądziołka <kuba@kadziolka.net> | 2020-02-23 12:30:18 +0100 |
commit | 6a3911b88f84eff6b3268b4687caea405f43e39b (patch) | |
tree | 6f20f82eca0daf8fd6867cce93ee8f2362b83bc7 | |
parent | 5ce67a1c202d3cddf5d3b98a72eea78e02d4a681 (diff) |
swh: Handle absolute URLs being returned by the API.
* guix/swh.scm (swh-url): Don't prepend (%swh-base-url) if a domain is
already present.
This fixes the "guix lint: warning: while connecting to Software Heritage:
host lookup failure: Name or service not known" error message.
-rw-r--r-- | guix/swh.scm | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/guix/swh.scm b/guix/swh.scm index 8bdf9965f6..ec744fed2f 100644 --- a/guix/swh.scm +++ b/guix/swh.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -126,9 +127,16 @@ (make-parameter "https://archive.softwareheritage.org")) (define (swh-url path . rest) + ;; URLs returned by the API may be relative or absolute. This has changed + ;; without notice before. Handle both cases by detecting whether the path + ;; starts with a domain. + (define root + (if (string-prefix? "/" path) + (string-append (%swh-base-url) path) + path)) + (define url - (string-append (%swh-base-url) path - (string-join rest "/" 'prefix))) + (string-append root (string-join rest "/" 'prefix))) ;; Ensure there's a trailing slash or we get a redirect. (if (string-suffix? "/" url) |