[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
04/04: import cran: Handle HTTP errors.
From: |
Ricardo Wurmus |
Subject: |
04/04: import cran: Handle HTTP errors. |
Date: |
Sat, 17 Dec 2016 18:14:45 +0000 (UTC) |
rekado pushed a commit to branch master
in repository guix.
commit fdbc84b056683204c5832d3740d9b109f31f7cb9
Author: Ricardo Wurmus <address@hidden>
Date: Sat Dec 17 15:24:45 2016 +0100
import cran: Handle HTTP errors.
Fixes <http://bugs.gnu.org/23479>.
* guix/import/cran.scm (fetch-description): Return #f in case of HTTP
errors.
---
guix/import/cran.scm | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/guix/import/cran.scm b/guix/import/cran.scm
index 123abfe..463a255 100644
--- a/guix/import/cran.scm
+++ b/guix/import/cran.scm
@@ -23,8 +23,10 @@
#:use-module ((ice-9 rdelim) #:select (read-string))
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
+ #:use-module (srfi srfi-34)
#:use-module (srfi srfi-41)
#:use-module (ice-9 receive)
+ #:use-module (web uri)
#:use-module (guix combinators)
#:use-module (guix http-client)
#:use-module (guix hash)
@@ -128,10 +130,18 @@ package definition."
(define (fetch-description base-url name)
"Return an alist of the contents of the DESCRIPTION file for the R package
-NAME, or #f on failure. NAME is case-sensitive."
+NAME, or #f in case of failure. NAME is case-sensitive."
;; This API always returns the latest release of the module.
(let ((url (string-append base-url name "/DESCRIPTION")))
- (description->alist (read-string (http-fetch url)))))
+ (guard (c ((http-get-error? c)
+ (format (current-error-port)
+ "error: failed to retrieve package information \
+from ~s: ~a (~s)~%"
+ (uri->string (http-get-error-uri c))
+ (http-get-error-code c)
+ (http-get-error-reason c))
+ #f))
+ (description->alist (read-string (http-fetch url))))))
(define (listify meta field)
"Look up FIELD in the alist META. If FIELD contains a comma-separated