forked from TrueCloudLab/distribution
Merge pull request #2985 from novas0x2a/default-transport
make it possible to wrap the client transport in another one
This commit is contained in:
commit
bdf3438b52
1 changed files with 12 additions and 4 deletions
|
@ -6,6 +6,13 @@ import (
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func identityTransportWrapper(rt http.RoundTripper) http.RoundTripper {
|
||||||
|
return rt
|
||||||
|
}
|
||||||
|
|
||||||
|
// DefaultTransportWrapper allows a user to wrap every generated transport
|
||||||
|
var DefaultTransportWrapper = identityTransportWrapper
|
||||||
|
|
||||||
// RequestModifier represents an object which will do an inplace
|
// RequestModifier represents an object which will do an inplace
|
||||||
// modification of an HTTP request.
|
// modification of an HTTP request.
|
||||||
type RequestModifier interface {
|
type RequestModifier interface {
|
||||||
|
@ -31,10 +38,11 @@ func (h headerModifier) ModifyRequest(req *http.Request) error {
|
||||||
// NewTransport creates a new transport which will apply modifiers to
|
// NewTransport creates a new transport which will apply modifiers to
|
||||||
// the request on a RoundTrip call.
|
// the request on a RoundTrip call.
|
||||||
func NewTransport(base http.RoundTripper, modifiers ...RequestModifier) http.RoundTripper {
|
func NewTransport(base http.RoundTripper, modifiers ...RequestModifier) http.RoundTripper {
|
||||||
return &transport{
|
return DefaultTransportWrapper(
|
||||||
|
&transport{
|
||||||
Modifiers: modifiers,
|
Modifiers: modifiers,
|
||||||
Base: base,
|
Base: base,
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// transport is an http.RoundTripper that makes HTTP requests after
|
// transport is an http.RoundTripper that makes HTTP requests after
|
||||||
|
|
Loading…
Reference in a new issue