forked from monaco-io/request
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrequest.go
More file actions
53 lines (45 loc) · 1.21 KB
/
request.go
File metadata and controls
53 lines (45 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package request
import (
"bytes"
"io/ioutil"
"net/http"
"time"
)
// Do send http request
func (c *Client) Do() ([]byte, error) {
client := &http.Client{
Timeout: c.Timeout * time.Second,
}
// encode like https://google.com?hello=world&package=request
var encodeError error
if c.URL, encodeError = EncodeURL(c.URL, c.Params); encodeError != nil {
return []byte{}, encodeError
}
// build request
_request, buildRequestError := http.NewRequest(c.Method, c.URL, bytes.NewReader(c.Body))
if buildRequestError != nil {
return []byte{}, buildRequestError
}
// add Header to request
if c.Method == "POST" {
if c.ContentType == "" {
c.ContentType = ApplicationJSON
}
_request.Header.Set("Content-Type", string(c.ContentType))
}
for k, v := range c.Header {
_request.Header.Add(k, v)
}
// set basic Auth of request
if c.BasicAuth.Username != "" && c.BasicAuth.Password != "" {
_request.SetBasicAuth(c.BasicAuth.Username, c.BasicAuth.Password)
}
// send request and close on func call end
resp, respError := client.Do(_request)
if respError != nil {
return []byte{}, respError
}
defer func() { _ = resp.Body.Close() }()
// read response data form resp
return ioutil.ReadAll(resp.Body)
}