@@ -9,16 +9,16 @@ import (
9
9
)
10
10
11
11
type DigestRequest struct {
12
- Body string
13
- Method string
14
- Password string
15
- URI string
16
- Username string
17
- Header http.Header
18
- Auth * authorization
19
- Wa * wwwAuthenticate
20
- CertVal bool
21
- Timeout time. Duration
12
+ Body string
13
+ Method string
14
+ Password string
15
+ URI string
16
+ Username string
17
+ Header http.Header
18
+ Auth * authorization
19
+ Wa * wwwAuthenticate
20
+ CertVal bool
21
+ HTTPClient * http. Client
22
22
}
23
23
24
24
type DigestTransport struct {
@@ -45,6 +45,23 @@ func NewTransport(username, password string) DigestTransport {
45
45
return dt
46
46
}
47
47
48
+ func (dr * DigestRequest ) getHTTPClient () * http.Client {
49
+ if dr .HTTPClient != nil {
50
+ return dr .HTTPClient
51
+ }
52
+ tlsConfig := tls.Config {}
53
+ if ! dr .CertVal {
54
+ tlsConfig .InsecureSkipVerify = true
55
+ }
56
+
57
+ return & http.Client {
58
+ Timeout : 30 * time .Second ,
59
+ Transport : & http.Transport {
60
+ TLSClientConfig : & tlsConfig ,
61
+ },
62
+ }
63
+ }
64
+
48
65
// UpdateRequest is called when you want to reuse an existing
49
66
// DigestRequest connection with new request information
50
67
func (dr * DigestRequest ) UpdateRequest (username , password , method , uri , body string ) * DigestRequest {
@@ -89,16 +106,7 @@ func (dr *DigestRequest) Execute() (resp *http.Response, err error) {
89
106
}
90
107
req .Header = dr .Header
91
108
92
- client := & http.Client {
93
- Timeout : dr .Timeout ,
94
- }
95
-
96
- if ! dr .CertVal {
97
- tr := & http.Transport {
98
- TLSClientConfig : & tls.Config {InsecureSkipVerify : true },
99
- }
100
- client .Transport = tr
101
- }
109
+ client := dr .getHTTPClient ()
102
110
103
111
if resp , err = client .Do (req ); err != nil {
104
112
return nil , err
@@ -160,16 +168,6 @@ func (dr *DigestRequest) executeRequest(authString string) (resp *http.Response,
160
168
req .Header = dr .Header
161
169
req .Header .Add ("Authorization" , authString )
162
170
163
- client := & http.Client {
164
- Timeout : dr .Timeout ,
165
- }
166
-
167
- if ! dr .CertVal {
168
- tr := & http.Transport {
169
- TLSClientConfig : & tls.Config {InsecureSkipVerify : true },
170
- }
171
- client .Transport = tr
172
- }
173
-
171
+ client := dr .getHTTPClient ()
174
172
return client .Do (req )
175
173
}
0 commit comments