guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

44/155: import cran: Handle HTTP errors.


From: John Darrington
Subject: 44/155: import cran: Handle HTTP errors.
Date: Wed, 21 Dec 2016 20:48:32 +0000 (UTC)

jmd pushed a commit to branch wip-installer
in repository guix.

commit 35e1035f90393e377e3021461f84ba50553788ae
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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]