From 9453dc246a1ee2772cddeb2029e5a1894812d47f Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Thu, 20 Oct 2016 21:58:53 +0100 Subject: [PATCH] updates on #29 --- file/download.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/file/download.go b/file/download.go index e46bbbca..ce751e3f 100644 --- a/file/download.go +++ b/file/download.go @@ -5,15 +5,19 @@ import ( "io/ioutil" "net/http" "os" + "path/filepath" "github.com/mholt/archiver" ) +// DownloadAs creates an archieve in one of the supported formats (zip, tar, +// tar.gz or tar.bz2) and sends it to be downloaded. func (i *Info) DownloadAs(w http.ResponseWriter, query string) (int, error) { var ( extension string temp string err error + tempfile string ) temp, err = ioutil.TempDir("", "") @@ -21,15 +25,18 @@ func (i *Info) DownloadAs(w http.ResponseWriter, query string) (int, error) { return http.StatusInternalServerError, err } + defer os.RemoveAll(temp) + tempfile = filepath.Join(temp, "temp") + switch query { case "zip": - extension, err = ".zip", archiver.Zip.Make(temp+"/temp", []string{i.Path}) + extension, err = ".zip", archiver.Zip.Make(tempfile, []string{i.Path}) case "tar": - extension, err = ".tar", archiver.Tar.Make(temp+"/temp", []string{i.Path}) + extension, err = ".tar", archiver.Tar.Make(tempfile, []string{i.Path}) case "targz": - extension, err = ".tar.gz", archiver.TarGz.Make(temp+"/temp", []string{i.Path}) + extension, err = ".tar.gz", archiver.TarGz.Make(tempfile, []string{i.Path}) case "tarbz2": - extension, err = ".tar.bz2", archiver.TarBz2.Make(temp+"/temp", []string{i.Path}) + extension, err = ".tar.bz2", archiver.TarBz2.Make(tempfile, []string{i.Path}) default: return http.StatusNotImplemented, nil }