@@ -17,47 +17,51 @@ type Header struct {
1717
1818func MakeRequest (c * fasthttp.Client , url string , maxRetries uint , timeout uint , headers ... Header ) ([]byte , error ) {
1919 var (
20- req * fasthttp.Request
21- resp * fasthttp.Response
20+ req * fasthttp.Request
21+ respBody []byte
22+ err error
2223 )
2324 retries := int (maxRetries )
2425 for i := retries ; i >= 0 ; i -- {
2526 req = fasthttp .AcquireRequest ()
26- defer fasthttp .ReleaseRequest (req )
2727
2828 req .Header .SetMethod (fasthttp .MethodGet )
2929 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+ }
3133 }
3234 req .Header .Set (fasthttp .HeaderUserAgent , getUserAgent ())
35+ req .Header .Set ("Accept" , "*/*" )
3336 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
5340 }
54-
55- goto done
5641 }
5742done:
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+ }
5857 if resp .StatusCode () != 200 {
5958 return nil , ErrNon200Response
6059 }
60+
61+ if resp .Body () == nil {
62+ return nil , ErrNilResponse
63+ }
64+
6165 return resp .Body (), nil
6266}
6367
0 commit comments