Documentation ¶
Overview ¶
Package httpcontrol allows a HTTP transport supporting connection pooling, timeouts & retries.
This Transport is built on top of the standard library transport and augments it with additional features.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Stats ¶
type Stats struct { // The RoundTrip request. Request *http.Request // May not always be available. Response *http.Response // Will be set if the RoundTrip resulted in an error. Note that these are // RoundTrip errors and we do not care about the HTTP Status. Error error // Each duration is independent and the sum of all of them is the total // request duration. One or more durations may be zero. Duration struct { Header, Body time.Duration } Retry struct { // Will be incremented for each retry. The initial request will have this // set to 0, and the first retry to 1 and so on. Count uint // Will be set if and only if an error was encountered and a retry is // pending. Pending bool } }
Stats for a RoundTrip.
type Transport ¶
type Transport struct { // Proxy specifies a function to return a proxy for a given // *http.Request. If the function returns a non-nil error, the // request is aborted with the provided error. // If Proxy is nil or returns a nil *url.URL, no proxy is used. Proxy func(*http.Request) (*url.URL, error) // TLSClientConfig specifies the TLS configuration to use with // tls.Client. If nil, the default configuration is used. TLSClientConfig *tls.Config // DisableKeepAlives, if true, prevents re-use of TCP connections // between different HTTP requests. DisableKeepAlives bool // DisableCompression, if true, prevents the Transport from // requesting compression with an "Accept-Encoding: gzip" // request header when the Request contains no existing // Accept-Encoding value. If the Transport requests gzip on // its own and gets a gzipped response, it's transparently // decoded in the Response.Body. However, if the user // explicitly requested gzip it is not automatically // uncompressed. DisableCompression bool // MaxIdleConnsPerHost, if non-zero, controls the maximum idle // (keep-alive) to keep per-host. If zero, // http.DefaultMaxIdleConnsPerHost is used. MaxIdleConnsPerHost int // Dial connects to the address on the named network. // // See func Dial for a description of the network and address // parameters. Dial func(network, address string) (net.Conn, error) // Timeout is the maximum amount of time a dial will wait for // a connect to complete. // // The default is no timeout. // // With or without a timeout, the operating system may impose // its own earlier timeout. For instance, TCP timeouts are // often around 3 minutes. DialTimeout time.Duration // DialKeepAlive specifies the keep-alive period for an active // network connection. // If zero, keep-alives are not enabled. Network protocols // that do not support keep-alives ignore this field. DialKeepAlive time.Duration // ResponseHeaderTimeout, if non-zero, specifies the amount of // time to wait for a server's response headers after fully // writing the request (including its body, if any). This // time does not include the time to read the response body. ResponseHeaderTimeout time.Duration // RequestTimeout, if non-zero, specifies the amount of time for the entire // request. This includes dialing (if necessary), the response header as well // as the entire body. RequestTimeout time.Duration // RetryAfterTimeout, if true, will enable retries for a number of failures // that are probably safe to retry for most cases but, depending on the // context, might not be safe. Retried errors: net.Errors where Timeout() // returns `true` or timeouts that bubble up as url.Error but were originally // net.Error, OpErrors where the request was cancelled (either by this lib or // by the calling code, or finally errors from requests that were cancelled // before the remote side was contacted. RetryAfterTimeout bool // MaxTries, if non-zero, specifies the number of times we will retry on // failure. Retries are only attempted for temporary network errors or known // safe failures. MaxTries uint // Stats allows for capturing the result of a request and is useful for // monitoring purposes. Stats func(*Stats) // contains filtered or unexported fields }
Transport is an implementation of RoundTripper that supports http, https, and http proxies (for either http or https with CONNECT). Transport can cache connections for future re-use, provides various timeouts, retry logic and the ability to track request statistics.
func TransportFlag ¶
TransportFlag - A Flag configured Transport instance.
func (*Transport) CancelRequest ¶
CancelRequest cancels an in-flight request by closing its connection.
func (*Transport) CloseIdleConnections ¶
func (t *Transport) CloseIdleConnections()
CloseIdleConnections closes the idle connections.