swh: Allows token from Software Heritage authentication service.

The token is provided using the environment variable GUIX_SWH_TOKEN.

* guix/swh.scm (%swh-token): New variable.
(call): Use it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
zimoun 2021-10-15 00:14:54 +02:00 committed by Ludovic Courtès
parent bd61d62182
commit 498cd9bcdb
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -2,6 +2,7 @@
;;; Copyright © 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -136,6 +137,12 @@ (define %verify-swh-certificate?
;; Whether to verify the X.509 HTTPS certificate for %SWH-BASE-URL.
(make-parameter #t))
;; Token from an account to the Software Heritage Authentication service
;; <https://archive.softwareheritage.org/api/>
(define %swh-token
(make-parameter (and=> (getenv "GUIX_SWH_TOKEN")
string->symbol)))
(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
@ -246,6 +253,10 @@ (define* (call url decode #:optional (method http-get*)
(and ((%allow-request?) url method)
(let*-values (((response port)
(method url #:streaming? #t
#:headers
(if (%swh-token)
`((authorization . (Bearer ,(%swh-token))))
'())
#:verify-certificate?
(%verify-swh-certificate?))))
;; See <https://archive.softwareheritage.org/api/#rate-limiting>.