@@ -2,6 +2,7 @@ package digest_auth_client
22
33import (
44 "bytes"
5+ "crypto/tls"
56 "fmt"
67 "net/http"
78 "time"
@@ -11,10 +12,12 @@ type DigestRequest struct {
1112 Body string
1213 Method string
1314 Password string
14- Uri string
15+ URI string
1516 Username string
17+ Header http.Header
1618 Auth * authorization
1719 Wa * wwwAuthenticate
20+ CertVal bool
1821}
1922
2023type DigestTransport struct {
@@ -26,6 +29,7 @@ type DigestTransport struct {
2629func NewRequest (username , password , method , uri , body string ) DigestRequest {
2730 dr := DigestRequest {}
2831 dr .UpdateRequest (username , password , method , uri , body )
32+ dr .CertVal = true
2933 return dr
3034}
3135
@@ -43,8 +47,9 @@ func (dr *DigestRequest) UpdateRequest(username, password, method, uri, body str
4347 dr .Body = body
4448 dr .Method = method
4549 dr .Password = password
46- dr .Uri = uri
50+ dr .URI = uri
4751 dr .Username = username
52+ dr .Header = make (map [string ][]string )
4853 return dr
4954}
5055
@@ -74,13 +79,22 @@ func (dr *DigestRequest) Execute() (resp *http.Response, err error) {
7479 }
7580
7681 var req * http.Request
77- if req , err = http .NewRequest (dr .Method , dr .Uri , bytes .NewReader ([]byte (dr .Body ))); err != nil {
82+ if req , err = http .NewRequest (dr .Method , dr .URI , bytes .NewReader ([]byte (dr .Body ))); err != nil {
7883 return nil , err
7984 }
85+ req .Header = dr .Header
8086
8187 client := & http.Client {
8288 Timeout : 30 * time .Second ,
8389 }
90+
91+ if ! dr .CertVal {
92+ tr := & http.Transport {
93+ TLSClientConfig : & tls.Config {InsecureSkipVerify : true },
94+ }
95+ client .Transport = tr
96+ }
97+
8498 if resp , err = client .Do (req ); err != nil {
8599 return nil , err
86100 }
@@ -135,15 +149,22 @@ func (dr *DigestRequest) executeExistingDigest() (resp *http.Response, err error
135149func (dr * DigestRequest ) executeRequest (authString string ) (resp * http.Response , err error ) {
136150 var req * http.Request
137151
138- if req , err = http .NewRequest (dr .Method , dr .Uri , bytes .NewReader ([]byte (dr .Body ))); err != nil {
152+ if req , err = http .NewRequest (dr .Method , dr .URI , bytes .NewReader ([]byte (dr .Body ))); err != nil {
139153 return nil , err
140154 }
141-
155+ req . Header = dr . Header
142156 req .Header .Add ("Authorization" , authString )
143157
144158 client := & http.Client {
145159 Timeout : 30 * time .Second ,
146160 }
147161
162+ if ! dr .CertVal {
163+ tr := & http.Transport {
164+ TLSClientConfig : & tls.Config {InsecureSkipVerify : true },
165+ }
166+ client .Transport = tr
167+ }
168+
148169 return client .Do (req )
149170}
0 commit comments