Documentation ¶
Overview ¶
Package train provides a http.RoundTripper with chainable middleware.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Transport ¶
func Transport(interceptors ...Interceptor) http.RoundTripper
Return a new http.RoundTripper with the given interceptors and http.DefaultTransport. Interceptors will be called in the order they are provided.
Example ¶
package main import ( "fmt" "io/ioutil" "net/http" "net/http/httptest" "os" "github.com/f2prateek/train" "github.com/f2prateek/train/log" "github.com/gohttp/response" ) func main() { client := &http.Client{ // Try changing the log level! Transport: train.Transport(log.New(os.Stdout, log.None)), } ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { response.OK(w, "Hello World!") })) defer ts.Close() resp, _ := client.Get(ts.URL) bytes, _ := ioutil.ReadAll(resp.Body) fmt.Println(string(bytes)) }
Output: Hello World!
func TransportWith ¶
func TransportWith(transport http.RoundTripper, interceptors ...Interceptor) http.RoundTripper
Return a new http.RoundTripper with the given interceptors and a custom http.RoundTripper to perform the actual HTTP request. Interceptors will be called in the order they are provided.
Types ¶
type Interceptor ¶
type Interceptor interface { // Intercept the chain and return a result. Intercept(Chain) (*http.Response, error) }
Observes, modifies, and potentially short-circuits requests going out and the corresponding requests coming back in. Typically interceptors will be used to add, remove, or transform headers on the request or response. Interceptors must return either a response or an error.
func RoundTripper ¶
func RoundTripper(rt http.RoundTripper) Interceptor
RoundTripper adapts an `http.RoundTripper` to an `Interceptor`.
func UserAgent ¶
func UserAgent(userAgent string) Interceptor
UserAgent returns an `Interceptor` that sets the user-agent on outgoing requests.
type InterceptorFunc ¶
The InterceptorFunc type is an adapter to allow the use of ordinary functions as interceptors. If f is a function with the appropriate signature, InterceptorFunc(f) is a Interceptor that calls f.