github.com/fitzoh/maven-push-plugin@v0.4.0/download.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "io" 6 "net/http" 7 "os" 8 ) 9 10 func DownloadFile(url string, destination string, username string, password string) error { 11 output, err := os.Create(destination) 12 if err != nil { 13 return fmt.Errorf("failed to create destination file %s, %+v", destination, err) 14 } 15 defer output.Close() 16 17 request, err := http.NewRequest(http.MethodGet, url, nil) 18 if err != nil { 19 return fmt.Errorf("failed to create request, %+v", err) 20 } 21 if len(username) != 0 { 22 request.SetBasicAuth(username, password) 23 } 24 25 response, err := http.DefaultClient.Do(request) 26 if err != nil { 27 return fmt.Errorf("failed to download file from %s, %+v", url, err) 28 } 29 if response.StatusCode != 200 { 30 return fmt.Errorf("received status code %d from url %s: %s\n", response.StatusCode, url, response.Status) 31 } 32 defer response.Body.Close() 33 34 _, err = io.Copy(output, response.Body) 35 if err != nil { 36 return fmt.Errorf("failed to save response to file, %+v", err) 37 } 38 return nil 39 }