forked from chyroc/gorequests
/
requests.go
57 lines (50 loc) · 1.32 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
50
51
52
53
54
55
56
57
package gorequests
import (
"context"
"fmt"
"io"
"net/http"
"sync"
"time"
cookiejar "github.com/juju/persistent-cookiejar"
)
type Request struct {
// internal
cachedurl string
persistentJar *cookiejar.Jar
lock sync.RWMutex
err error
logger Logger
// request
context context.Context // request context
isIgnoreSSL bool // request ignore ssl verify
header http.Header // request header
querys map[string][]string // request query
isNoRedirect bool // request ignore redirect
timeout time.Duration // request timeout
url string // request url
method string // request method
rawBody []byte // []byte of body
body io.Reader // request body
// resp
resp *http.Response
bytes []byte
isRead bool
isRequest bool
}
func New(method, url string) *Request {
r := &Request{
url: url,
method: method,
header: map[string][]string{},
querys: make(map[string][]string),
context: context.TODO(),
logger: NewStdoutLogger(),
}
r.header.Set("user-agent", fmt.Sprintf("gorequests/%s (https://github.com/cairc/gorequests)", version))
return r
}
func (r *Request) SetError(err error) *Request {
r.err = err
return r
}