...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package util
17
18 import (
19 "bytes"
20 "context"
21 "fmt"
22 "io"
23 "net/http"
24 )
25
26
27 func FileOrURLReadCloser(ctx context.Context, url string, content []byte) (io.ReadCloser, error) {
28 var dataReader io.ReadCloser
29 if url != "" {
30
31 client := &http.Client{}
32 req, err := http.NewRequestWithContext(ctx, "GET", url, nil)
33 if err != nil {
34 return nil, err
35 }
36 resp, err := client.Do(req)
37 if err != nil {
38 return nil, err
39 }
40 if resp.StatusCode < 200 || resp.StatusCode > 299 {
41 return nil, fmt.Errorf("error received while fetching artifact '%v': %v", url, resp.Status)
42 }
43
44 dataReader = resp.Body
45 } else {
46 dataReader = io.NopCloser(bytes.NewReader(content))
47 }
48 return dataReader, nil
49 }
50
View as plain text