train: github.com/f2prateek/train Index | Examples | Files | Directories

package train

import "github.com/f2prateek/train"

Package train provides a http.RoundTripper with chainable middleware.

Index

Examples

Package Files

train.go

func Transport Uses

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.

Code:

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 Uses

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.

type Chain Uses

type Chain interface {
    // Request returns the http.Request for this chain.
    Request() *http.Request
    // Proceed the chain with a given request and returns the result.
    Proceed(*http.Request) (*http.Response, error)
}

type Interceptor Uses

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.

type InterceptorFunc Uses

type InterceptorFunc func(Chain) (*http.Response, error)

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.

func (InterceptorFunc) Intercept Uses

func (f InterceptorFunc) Intercept(c Chain) (*http.Response, error)

Intercept calls f(c).

Directories

PathSynopsis
curl
log
mocks
statsd

Package train imports 1 packages (graph) and is imported by 5 packages. Updated 2016-08-01. Refresh now. Tools for package owners.