27 lines
555 B
Go
27 lines
555 B
Go
package statham
|
|
|
|
import "net/http"
|
|
|
|
func NewTransport(defaultTr http.RoundTripper, mapping Mapping) http.RoundTripper {
|
|
return &roundTripper{
|
|
defaultTripper: defaultTr,
|
|
mapping: mapping,
|
|
}
|
|
}
|
|
|
|
type Mapping map[string]http.RoundTripper
|
|
|
|
type roundTripper struct {
|
|
defaultTripper http.RoundTripper
|
|
mapping Mapping
|
|
}
|
|
|
|
func (rt *roundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
|
|
transport, found := rt.mapping[req.URL.Host]
|
|
if !found {
|
|
return rt.defaultTripper.RoundTrip(req)
|
|
}
|
|
|
|
return transport.RoundTrip(req)
|
|
}
|