httputil

package
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 27, 2020 License: ISC Imports: 13 Imported by: 3

Documentation

Overview

Package httputil provides abstractions around the common needs of HTTP. It also allows swapping in and out the HTTP client.

Index

Constants

This section is empty.

Variables

View Source
var Retries uint = 5

Retries is the default attempts to retry if the API returns an error before giving up. If the value is smaller than 1, then requests will retry forever.

Functions

func JSONRequest

func JSONRequest(r httpdriver.Request) error

func MultipartRequest

func MultipartRequest(r httpdriver.Request) error

func ResponseNoop added in v0.4.0

ResponseNoop is used for (*Client).OnResponse.

Types

type Client

type Client struct {
	httpdriver.Client
	json.Driver
	SchemaEncoder

	// DefaultOptions, if not nil, will be copied and prefixed on each Request.
	DefaultOptions []RequestOption

	// OnResponse is called after every Do() call. Response might be nil if Do()
	// errors out. The error returned will override Do's if it's not nil.
	OnResponse func(httpdriver.Request, httpdriver.Response) error

	// Default to the global Retries variable (5).
	Retries uint
}

func NewClient

func NewClient() *Client

func (*Client) FastRequest

func (c *Client) FastRequest(method, url string, opts ...RequestOption) error

func (*Client) MeanwhileMultipart

func (c *Client) MeanwhileMultipart(
	writer func(*multipart.Writer) error,
	method, url string, opts ...RequestOption) (httpdriver.Response, error)

func (*Client) Request

func (c *Client) Request(method, url string, opts ...RequestOption) (httpdriver.Response, error)

func (*Client) RequestCtx

func (c *Client) RequestCtx(
	ctx context.Context,
	method, url string, opts ...RequestOption) (httpdriver.Response, error)

func (*Client) RequestCtxJSON

func (c *Client) RequestCtxJSON(
	ctx context.Context,
	to interface{}, method, url string, opts ...RequestOption) error

func (*Client) RequestJSON

func (c *Client) RequestJSON(to interface{}, method, url string, opts ...RequestOption) error

type DefaultSchema

type DefaultSchema struct {
	*schema.Encoder
	// contains filtered or unexported fields
}

func (*DefaultSchema) Encode

func (d *DefaultSchema) Encode(src interface{}) (url.Values, error)

type ErrorCode

type ErrorCode uint

type HTTPError

type HTTPError struct {
	Status int    `json:"-"`
	Body   []byte `json:"-"`

	Code    ErrorCode `json:"code"`
	Message string    `json:"message,omitempty"`
}

func (HTTPError) Error

func (err HTTPError) Error() string

type JSONError

type JSONError struct {
	// contains filtered or unexported fields
}

type RequestError

type RequestError struct {
	// contains filtered or unexported fields
}

type RequestOption

type RequestOption func(httpdriver.Request) error

func PrependOptions added in v0.4.0

func PrependOptions(opts []RequestOption, prepend ...RequestOption) []RequestOption

func WithBody

func WithBody(body io.ReadCloser) RequestOption

func WithContentType

func WithContentType(ctype string) RequestOption

func WithHeaders added in v0.3.2

func WithHeaders(headers http.Header) RequestOption

func WithJSONBody

func WithJSONBody(json json.Driver, v interface{}) RequestOption

WithJSONBody inserts a JSON body into the request. This ignores JSON errors.

func WithSchema

func WithSchema(schema SchemaEncoder, v interface{}) RequestOption

type SchemaEncoder

type SchemaEncoder interface {
	Encode(src interface{}) (url.Values, error)
}

SchemaEncoder expects the encoder to read the "schema" tags.

Directories

Path Synopsis
Package httpdriver provides interfaces and implementations of a simple HTTP client.
Package httpdriver provides interfaces and implementations of a simple HTTP client.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL