-
Notifications
You must be signed in to change notification settings - Fork 1
/
session.go
90 lines (76 loc) · 1.51 KB
/
session.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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package https
import "net/url"
// 阶段一
// 维护session共享区
// Get(url string) requests
// Post(url string) requests
type p1 session
func (p *p1) Get(uri string) *p2 {
p.newComm(get, uri)
return (*p2)(p)
}
func (p *p1) Post(uri string) *p2 {
p.newComm(post, uri)
return (*p2)(p)
}
func (p *p1) newComm(method, uri string) {
p.method = method
p.uri = uri
p.param = make(url.Values)
p.req = &base{
cookie: make(param),
header: make(param),
}
p.err = nil
if p.close == false && p.response != nil && !p.response.Close {
_ = p.response.Body.Close()
}
p.close = false
p.retry = 0
}
// session本身的通用获取
// 优先从私有区获取, 然后从共有区获取
func (s *session) GetConnTimeout() int {
timeout := s.req.connTimeout
if 0 == timeout {
timeout = s.comm.connTimeout
}
return timeout
}
func (s *session) GetProxy() string {
proxy := s.req.proxy
if "" == proxy {
proxy = s.comm.proxy
}
return proxy
}
func (s *session) HasRespTimeout() bool {
return s.GetRespTimeout() != 0
}
func (s *session) GetRespTimeout() int {
timeout := s.req.respTimeout
if 0 == timeout {
timeout = s.comm.respTimeout
}
return timeout
}
func (s *session) GetRetry() int {
count := s.req.retry
if 0 == count {
count = s.comm.retry
}
return int(count)
}
func (s *session) GetAuth() string {
auth := s.req.auth
if "" == auth {
auth = s.comm.auth
}
return auth
}
func (p *p1) GetCookies() param {
return p.comm.cookie
}
func (p *p1) GetCookie(key string) string {
return p.comm.cookie[key]
}