-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrequests.go
49 lines (42 loc) · 1.06 KB
/
requests.go
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
package twitter
import (
"bytes"
"net/http"
"net/url"
"strings"
)
// Request Struct
type Request struct {
Req *http.Request
Results Data
}
// NewRquest returns a new Request struct
func NewRquest(method, url string, v url.Values, body []byte) (*Request, error) {
request, err := http.NewRequest(method, url, bytes.NewBuffer(body))
if err != nil {
return nil, err
}
query := request.URL.Query()
for key, value := range v {
query.Set(key, strings.Join(value, ","))
}
if method == "POST" {
// we need to set the content-type to application/json
// to perform a post request
request.Header.Set("Content-Type", "application/json")
}
request.URL.RawQuery = query.Encode()
return &Request{request, Data{}}, nil
}
// UpdateURLValues updates request's query values
func (r *Request) UpdateURLValues(v url.Values) {
query := r.Req.URL.Query()
for key, value := range v {
query.Set(key, strings.Join(value, ","))
}
r.Req.URL.RawQuery = query.Encode()
}
// ResetResults resets request's results
func (r *Request) ResetResults() {
r.Results = Data{}
}