@@ -9,15 +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
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
21
22
}
22
23
23
24
type DigestTransport struct {
@@ -41,6 +42,23 @@ func NewTransport(username, password string) DigestTransport {
41
42
return dt
42
43
}
43
44
45
+ func (dr * DigestRequest ) getHTTPClient () * http.Client {
46
+ if dr .HTTPClient != nil {
47
+ return dr .HTTPClient
48
+ }
49
+ tlsConfig := tls.Config {}
50
+ if ! dr .CertVal {
51
+ tlsConfig .InsecureSkipVerify = true
52
+ }
53
+
54
+ return & http.Client {
55
+ Timeout : 30 * time .Second ,
56
+ Transport : & http.Transport {
57
+ TLSClientConfig : & tlsConfig ,
58
+ },
59
+ }
60
+ }
61
+
44
62
// UpdateRequest is called when you want to reuse an existing
45
63
// DigestRequest connection with new request information
46
64
func (dr * DigestRequest ) UpdateRequest (username , password , method , uri , body string ) * DigestRequest {
@@ -84,16 +102,7 @@ func (dr *DigestRequest) Execute() (resp *http.Response, err error) {
84
102
}
85
103
req .Header = dr .Header
86
104
87
- client := & http.Client {
88
- Timeout : 30 * time .Second ,
89
- }
90
-
91
- if ! dr .CertVal {
92
- tr := & http.Transport {
93
- TLSClientConfig : & tls.Config {InsecureSkipVerify : true },
94
- }
95
- client .Transport = tr
96
- }
105
+ client := dr .getHTTPClient ()
97
106
98
107
if resp , err = client .Do (req ); err != nil {
99
108
return nil , err
@@ -155,16 +164,6 @@ func (dr *DigestRequest) executeRequest(authString string) (resp *http.Response,
155
164
req .Header = dr .Header
156
165
req .Header .Add ("Authorization" , authString )
157
166
158
- client := & http.Client {
159
- Timeout : 30 * time .Second ,
160
- }
161
-
162
- if ! dr .CertVal {
163
- tr := & http.Transport {
164
- TLSClientConfig : & tls.Config {InsecureSkipVerify : true },
165
- }
166
- client .Transport = tr
167
- }
168
-
167
+ client := dr .getHTTPClient ()
169
168
return client .Do (req )
170
169
}
0 commit comments