forked from TrueCloudLab/distribution
make it possible to wrap the client transport in another one
Signed-off-by: Mike Lundy <mike@fluffypenguin.org>
This commit is contained in:
parent
1fb7fffdb2
commit
c486db2d71
1 changed files with 12 additions and 4 deletions
|
@ -6,6 +6,13 @@ import (
|
|||
"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
|
||||
// modification of an HTTP request.
|
||||
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
|
||||
// the request on a RoundTrip call.
|
||||
func NewTransport(base http.RoundTripper, modifiers ...RequestModifier) http.RoundTripper {
|
||||
return &transport{
|
||||
return DefaultTransportWrapper(
|
||||
&transport{
|
||||
Modifiers: modifiers,
|
||||
Base: base,
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// transport is an http.RoundTripper that makes HTTP requests after
|
||||
|
|
Loading…
Reference in a new issue