/
resty.go
48 lines (38 loc) · 1.01 KB
/
resty.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
package restclient
import (
"time"
syncOnce "github.com/admpub/once"
"github.com/admpub/resty/v2"
)
var (
// DefaultTimeout 默认超时时间
DefaultTimeout = 10 * time.Second
DefaultRedirectPolicy = resty.FlexibleRedirectPolicy(5)
restyClient *resty.Client
restyRetryable *resty.Client
restyOnce syncOnce.Once
restyRetryableOnce syncOnce.Once
)
func initRestyClient() {
restyClient = resty.New().SetTimeout(DefaultTimeout).SetRedirectPolicy(DefaultRedirectPolicy)
InitRestyHook(restyClient)
}
func ResetResty() {
restyOnce.Reset()
}
func Resty() *resty.Request {
restyOnce.Do(initRestyClient)
return restyClient.R()
}
// - retryable -
func initRetryable() {
restyRetryable = resty.New().SetRetryCount(3).SetTimeout(DefaultTimeout).SetRedirectPolicy(DefaultRedirectPolicy)
InitRestyHook(restyRetryable)
}
func ResetRestyRetryable() {
restyRetryableOnce.Reset()
}
func RestyRetryable() *resty.Request {
restyRetryableOnce.Do(initRetryable)
return restyRetryable.R()
}