Documentation ¶
Overview ¶
Package httpclient provides an http client instrumented with the ex/o11y package, and includes configurable timeouts, retries, authentication and connection pooling.
Index ¶
Constants ¶
const JSON = "application/json; charset=utf-8"
Variables ¶
var ErrNoContent = o11y.NewWarning("no content")
Functions ¶
func HasErrorCode ¶
HasErrorCode is DEPRECATED - use HasStatusCode instead.
func HasStatusCode ¶
HasStatusCode tests err for HTTPError and returns true if any of the codes match the stored code.
func IsNoContent ¶
func IsRequestProblem ¶
IsRequestProblem checks the err for HTTPError and returns true if the stored status code is in the 4xx range
func NewJSONDecoder ¶
func NewJSONDecoder(resp interface{}) decoder
NewJSONDecoder returns a decoder func enclosing the resp param the func returned takes an io reader which will be passed to a json decoder to decode into the resp.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is the o11y instrumented http client
func (*Client) Call ¶
Call makes the request call. It will trace out a top level span and a span for any retry attempts. Retries will be attempted on any 5XX responses. If the http call completed with a non 2XX status code then an HTTPError will be returned containing details of result of the call.
func (*Client) CloseIdleConnections ¶
func (c *Client) CloseIdleConnections()
CloseIdleConnections is only used for testing.
type Config ¶
type Config struct { // Name is used to identify the client in spans Name string // BaseURL is the URL and optional path prefix to the server that this is a client of. BaseURL string // AuthHeader the name of the header that the AuthToken will be set on. If empty then // the AuthToken will be used in a bearer token authorization header AuthHeader string // AuthToken is the token to use for authentication. AuthToken string // AcceptType if set will be used to set the Accept header. AcceptType string // Timeout is the maximum time any call can take including any retries Timeout time.Duration // MaxConnectionsPerHost sets the connection pool size MaxConnectionsPerHost int }
Config provides the client configuration
type HTTPError ¶
type HTTPError struct {
// contains filtered or unexported fields
}
HTTPError represents an error in an HTTP call when the response status code is not 2XX
type Request ¶
type Request struct { Method string Route string Body interface{} // If set this will be sent as JSON Decoder decoder // If set will be used to decode the response body Cookie *http.Cookie Headers map[string]string Timeout time.Duration // The individual per call timeout Query url.Values NoPropagation bool // contains filtered or unexported fields }
Request is an individual http request that the Client will send
func NewRequest ¶
NewRequest should be used to create a new request rather than constructing a Request directly. This encourages the user to specify a "route" for the tracing, and avoid high cardinality routes (when parts of the url may contain many varying values). The returned Request can be further altered before being passed to the client.Call.