From 19858521fd01b5deb3f8e0d885db043929095327 Mon Sep 17 00:00:00 2001 From: jaynis Date: Thu, 20 Jun 2024 15:13:46 +0200 Subject: [PATCH] added http status code error handling to DownloadUrl function (#2959) Signed-off-by: jaynis --- pkg/utils/utils.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index 4e053a45..00ca97e6 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -171,6 +171,10 @@ func IsURL(str string) bool { return strings.HasPrefix(str, "http://") || strings.HasPrefix(str, "https://") } +func isHttp2xxSuccessful(status int) bool { + return status >= 200 && status < 300 +} + func DownloadUrl(ctx context.Context, httpClient *http.Client, url string, localPath string) error { resp, err := ctxhttp.Get(ctx, httpClient, url) if err != nil { @@ -178,6 +182,10 @@ func DownloadUrl(ctx context.Context, httpClient *http.Client, url string, local } defer resp.Body.Close() + if !isHttp2xxSuccessful(resp.StatusCode) { + return errors.New(resp.Status) + } + w, err := os.Create(localPath) if err != nil { return err