commit 61142dd7677803ee26c9480b0bb557390e7409c9 Author: Nulo Date: Fri Jan 20 15:42:35 2023 -0300 asdf diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..df192c9 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module gitea.nulo.in/Nulo/downloader + +go 1.19 diff --git a/main.go b/main.go new file mode 100644 index 0000000..2368c15 --- /dev/null +++ b/main.go @@ -0,0 +1,51 @@ +package main + +import ( + "io" + "log" + "net/http" + "os" + "strings" +) + +func main() { + entries := os.Args[1:] + c := make(chan error) + d := Downloader{} + for _, u := range entries { + splits := strings.Split(u, ";") + url := splits[0] + output := splits[1] + go d.download(url, output, c) + } + + for range entries { + err := <-c + if err != nil { + log.Panic(err) + } + } +} + +type Downloader struct { + HTTPClient http.Client +} + +func (d *Downloader) download(url string, output string, doneChan chan error) { + res, err := d.HTTPClient.Get(url) + if err != nil { + doneChan <- err + return + } + f, err := os.Create(output) + if err != nil { + doneChan <- err + return + } + _, err = io.Copy(f, res.Body) + if err != nil { + doneChan <- err + return + } + doneChan <- nil +}