httputil

package
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: May 24, 2020 License: ISC Imports: 13 Imported by: 0

Documentation

Overview

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

Index

Constants

View Source
const StatusTooManyRequests = 429

StatusTooManyRequests is the HTTP status code discord sends on rate-limiting.

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

Types

type Client

type Client struct {
	httpdriver.Client
	SchemaEncoder

	// OnRequest, if not nil, will be copied and prefixed on each Request.
	OnRequest []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 []ResponseFunc

	// Default to the global Retries variable (5).
	Retries uint
	// contains filtered or unexported fields
}

func NewClient

func NewClient() *Client

func (*Client) Context

func (c *Client) Context() context.Context

Context is a shared context for all future calls. It's Background by default.

func (*Client) Copy

func (c *Client) Copy() *Client

Copy returns a shallow copy of the 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) RequestJSON

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

func (*Client) WithContext

func (c *Client) WithContext(ctx context.Context) *Client

WithContext returns a client copy of the client with the given context.

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
}

func (JSONError) Error

func (j JSONError) Error() string

func (JSONError) Unwrap

func (j JSONError) Unwrap() error

type RequestError

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

func (RequestError) Error

func (r RequestError) Error() string

func (RequestError) Unwrap

func (r RequestError) Unwrap() error

type RequestOption

type RequestOption func(httpdriver.Request) error

func PrependOptions

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

func WithBody

func WithBody(body io.ReadCloser) RequestOption

func WithContentType

func WithContentType(ctype string) RequestOption

func WithHeaders

func WithHeaders(headers http.Header) RequestOption

func WithJSONBody

func WithJSONBody(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 ResponseFunc

type ResponseFunc func(httpdriver.Request, httpdriver.Response) error

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