@@ -17,47 +17,51 @@ type Header struct {
17
17
18
18
func MakeRequest (c * fasthttp.Client , url string , maxRetries uint , timeout uint , headers ... Header ) ([]byte , error ) {
19
19
var (
20
- req * fasthttp.Request
21
- resp * fasthttp.Response
20
+ req * fasthttp.Request
21
+ respBody []byte
22
+ err error
22
23
)
23
24
retries := int (maxRetries )
24
25
for i := retries ; i >= 0 ; i -- {
25
26
req = fasthttp .AcquireRequest ()
26
- defer fasthttp .ReleaseRequest (req )
27
27
28
28
req .Header .SetMethod (fasthttp .MethodGet )
29
29
for _ , header := range headers {
30
- req .Header .Set (header .Key , header .Value )
30
+ if header .Key != "" {
31
+ req .Header .Set (header .Key , header .Value )
32
+ }
31
33
}
32
34
req .Header .Set (fasthttp .HeaderUserAgent , getUserAgent ())
35
+ req .Header .Set ("Accept" , "*/*" )
33
36
req .SetRequestURI (url )
34
-
35
- resp = fasthttp .AcquireResponse ()
36
- defer fasthttp .ReleaseResponse (resp )
37
-
38
- if err := c .DoTimeout (req , resp , time .Second * time .Duration (timeout )); err != nil {
39
- fasthttp .ReleaseRequest (req )
40
- if retries == 0 {
41
- return nil , err
42
- }
43
- }
44
-
45
- if resp .Body () == nil {
46
- if retries == 0 {
47
- return nil , ErrNilResponse
48
- }
49
- }
50
- // url responded with 503, so try again
51
- if resp .StatusCode () == 503 {
52
- continue
37
+ respBody , err = doReq (c , req , timeout )
38
+ if err == nil {
39
+ goto done
53
40
}
54
-
55
- goto done
56
41
}
57
42
done:
43
+ if err != nil {
44
+ return nil , err
45
+ }
46
+ return respBody , nil
47
+ }
48
+
49
+ // doReq handles http requests
50
+ func doReq (c * fasthttp.Client , req * fasthttp.Request , timeout uint ) ([]byte , error ) {
51
+ resp := fasthttp .AcquireResponse ()
52
+ defer fasthttp .ReleaseResponse (resp )
53
+ defer fasthttp .ReleaseRequest (req )
54
+ if err := c .DoTimeout (req , resp , time .Second * time .Duration (timeout )); err != nil {
55
+ return nil , err
56
+ }
58
57
if resp .StatusCode () != 200 {
59
58
return nil , ErrNon200Response
60
59
}
60
+
61
+ if resp .Body () == nil {
62
+ return nil , ErrNilResponse
63
+ }
64
+
61
65
return resp .Body (), nil
62
66
}
63
67
0 commit comments