@@ -31,20 +31,21 @@ var _ http.RoundTripper = (*RoundTripper)(nil)
3131var ErrSigning = errors .New ("signing proxy: unable to sign request" )
3232
3333// NewHTTPClient will create a new http.Client and add the signing transport to it.
34- func NewHTTPClient (signer request.Signer , signingKey request.RequestSigner , log logger.Logger ) * http.Client {
34+ func NewHTTPClient (signer request.Signer , signingKey request.RequestSigner , log logger.Logger , inReq * http. Request ) * http.Client {
3535 return & http.Client {
36- Transport : NewTransport (http .DefaultTransport , signer , signingKey , log ),
36+ Transport : NewTransport (http .DefaultTransport , signer , signingKey , log , inReq ),
3737 }
3838}
3939
4040// NewTransport will create a new http.RoundTripper that can be used in http.Client to sign requests transparently.
4141// Underlying http.RoundTripper cannot be nil, if unsure, you can use http.DefaultTransport.
42- func NewTransport (inner http.RoundTripper , signer request.Signer , signingKey request.RequestSigner , log logger.Logger ) * RoundTripper {
42+ func NewTransport (inner http.RoundTripper , signer request.Signer , signingKey request.RequestSigner , log logger.Logger , inReq * http. Request ) * RoundTripper {
4343 return & RoundTripper {
4444 inner : inner ,
4545 signer : signer ,
4646 signingKey : signingKey ,
4747 log : log ,
48+ inReq : inReq ,
4849 }
4950}
5051
@@ -54,6 +55,7 @@ type RoundTripper struct {
5455 signer request.Signer
5556 signingKey request.RequestSigner
5657 log logger.Logger
58+ inReq * http.Request
5759}
5860
5961// RoundTrip does the actual signing and sending.
@@ -63,7 +65,7 @@ func (r RoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
6365 r .log .LogF ("signing error: %v" , err )
6466 return nil , ErrSigning
6567 }
66- origUserAgent := req .Header .Get ("User-Agent" )
68+ origUserAgent := r . inReq .Header .Get ("User-Agent" )
6769 if origUserAgent != "" {
6870 req .Header .Set ("User-Agent-Orig" , origUserAgent )
6971 }
0 commit comments