From 2c8eb6be48138aea49c3b1c8ab203408883dea4f Mon Sep 17 00:00:00 2001 From: Arsen Musayelyan Date: Sun, 29 Jan 2023 17:56:11 -0800 Subject: [PATCH] Check ~name parameter for file downloader --- internal/dl/file.go | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/internal/dl/file.go b/internal/dl/file.go index f154a57..746af6a 100644 --- a/internal/dl/file.go +++ b/internal/dl/file.go @@ -6,6 +6,7 @@ import ( "crypto/sha256" "io" "net/http" + "net/url" "os" "path" "path/filepath" @@ -35,12 +36,27 @@ func (FileDownloader) MatchURL(string) bool { // Download downloads a file using HTTP. If the file is // compressed using a supported format, it will be extracted func (FileDownloader) Download(opts Options) (Type, string, error) { - res, err := http.Get(opts.URL) + u, err := url.Parse(opts.URL) if err != nil { return 0, "", err } - name := getFilename(res) + query := u.Query() + + name := query.Get("~name") + query.Del("~name") + + u.RawQuery = query.Encode() + + res, err := http.Get(u.String()) + if err != nil { + return 0, "", err + } + + if name == "" { + name = getFilename(res) + } + path := filepath.Join(opts.Destination, name) fl, err := os.Create(path) if err != nil {