From bceccfd2a83fdbf2ef29c81ef39e5308574b6d33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Fri, 22 May 2015 23:40:52 +0200 Subject: [PATCH] Move http code into http.go --- cmd/fdroidcl/http.go | 46 ++++++++++++++++++++++++++++++++++++++++++++ cmd/fdroidcl/main.go | 38 ------------------------------------ 2 files changed, 46 insertions(+), 38 deletions(-) create mode 100644 cmd/fdroidcl/http.go diff --git a/cmd/fdroidcl/http.go b/cmd/fdroidcl/http.go new file mode 100644 index 0000000..6cca02a --- /dev/null +++ b/cmd/fdroidcl/http.go @@ -0,0 +1,46 @@ +/* Copyright (c) 2015, Daniel Martí */ +/* See LICENSE for licensing information */ + +package main + +import ( + "errors" + "io/ioutil" + "net/http" + "os" +) + +var errNotModified = errors.New("etag matches, file was not modified") + +func downloadEtag(url, path string) error { + client := &http.Client{} + req, err := http.NewRequest("GET", url, nil) + + etagPath := path + "-etag" + if _, err := os.Stat(path); err == nil { + etag, _ := ioutil.ReadFile(etagPath) + req.Header.Add("If-None-Match", string(etag)) + } + + resp, err := client.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + if resp.StatusCode == http.StatusNotModified { + return errNotModified + } + jar, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + err = ioutil.WriteFile(path, jar, 0644) + err2 := ioutil.WriteFile(etagPath, []byte(resp.Header["Etag"][0]), 0644) + if err != nil { + return err + } + if err2 != nil { + return err2 + } + return nil +} diff --git a/cmd/fdroidcl/main.go b/cmd/fdroidcl/main.go index d07c1d8..23d3863 100644 --- a/cmd/fdroidcl/main.go +++ b/cmd/fdroidcl/main.go @@ -4,12 +4,9 @@ package main import ( - "errors" "flag" "fmt" - "io/ioutil" "log" - "net/http" "os" "strings" @@ -160,41 +157,6 @@ func init() { } } -var errNotModified = errors.New("etag matches, file was not modified") - -func downloadEtag(url, path string) error { - client := &http.Client{} - req, err := http.NewRequest("GET", url, nil) - - etagPath := path + "-etag" - if _, err := os.Stat(path); err == nil { - etag, _ := ioutil.ReadFile(etagPath) - req.Header.Add("If-None-Match", string(etag)) - } - - resp, err := client.Do(req) - if err != nil { - return err - } - defer resp.Body.Close() - if resp.StatusCode == http.StatusNotModified { - return errNotModified - } - jar, err := ioutil.ReadAll(resp.Body) - if err != nil { - return err - } - err = ioutil.WriteFile(path, jar, 0644) - err2 := ioutil.WriteFile(etagPath, []byte(resp.Header["Etag"][0]), 0644) - if err != nil { - return err - } - if err2 != nil { - return err2 - } - return nil -} - func indexPath(repoName string) string { return repoName + ".jar" }