(define-module (guix-download)
#:use-module (web uri)
#:use-module (web client)
+ #:use-module (web response)
#:use-module (guix ui)
#:use-module (guix store)
#:use-module (guix utils)
(define (http-fetch url port)
"Fetch from URL over HTTP and write the result to PORT."
- (let-values (((response data) (http-get url #:decode-body? #f)))
- (put-bytevector port data)))
+ (let*-values (((response data) (http-get url #:decode-body? #f))
+ ((code) (response-code response)))
+ (if (= code 200)
+ (put-bytevector port data)
+ (leave (_ "failed to download from `~a': ~a: ~a~%")
+ (uri->string url)
+ code (response-reason-phrase response)))))
(define (ftp-fetch url port)
"Fetch from URL over FTP and write the result to PORT."
--- /dev/null
+# Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
+# Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
+#
+# This file is part of Guix.
+#
+# Guix is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or (at
+# your option) any later version.
+#
+# Guix is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Guix. If not, see <http://www.gnu.org/licenses/>.
+
+#
+# Test the `guix-download' command-line utility.
+#
+
+guix-download --version
+
+# Make sure it fails here.
+if guix-download http://www.example.com/does-not-exist
+then false; else true; fi