httpclient

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Jul 13, 2021 License: BSD-3-Clause Imports: 21 Imported by: 0

README

httpclient

HTTP Client in Go

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrRequestNil    = errors.New("httpclient: request cannot be nil")
	ErrRequestURLNil = errors.New("httpclient: request url cannot be empty")
)

Functions

This section is empty.

Types

type Client

type Client struct {
	*http.Client
}

func New

func New(opts *Opts) *Client

func (*Client) Delete

func (c *Client) Delete(ctx context.Context, req *Request) *Response

func (*Client) Get

func (c *Client) Get(ctx context.Context, req *Request) *Response

func (*Client) Head

func (c *Client) Head(ctx context.Context, req *Request) *Response

func (*Client) Options

func (c *Client) Options(ctx context.Context, req *Request) *Response

func (*Client) PatchForm

func (c *Client) PatchForm(ctx context.Context, req *Request) *Response

func (*Client) PatchJSON

func (c *Client) PatchJSON(ctx context.Context, req *Request) *Response

func (*Client) PatchMultipart

func (c *Client) PatchMultipart(ctx context.Context, req *Request) *Response

func (*Client) PostForm

func (c *Client) PostForm(ctx context.Context, req *Request) *Response

func (*Client) PostJSON

func (c *Client) PostJSON(ctx context.Context, req *Request) *Response

func (*Client) PostMultipart

func (c *Client) PostMultipart(ctx context.Context, req *Request) *Response

func (*Client) PutForm

func (c *Client) PutForm(ctx context.Context, req *Request) *Response

func (*Client) PutJSON

func (c *Client) PutJSON(ctx context.Context, req *Request) *Response

func (*Client) PutMultipart

func (c *Client) PutMultipart(ctx context.Context, req *Request) *Response

type File

type File struct {
	FieldName string
	FileName  string // along with file extension
	Data      []byte
}

type Opts

type Opts struct {
	MaxIdleConns    int
	IdleConnTimeout time.Duration

	// Logger enable log for successfull or failed request.
	EnableLogger bool

	// MaxRetry maximum retry for transient errors. Ignored for POST or PATCH as it's not safe.
	MaxRetry int

	// RetryPolicy if MaxRetry is zero then this will be ignored.
	// It can use customized retry policy, if MaxRetry is set and RetryPolicy is nil, then default will be used.
	RetryPolicy func(*http.Response, error) bool

	// BackOffPolicy if MaxRetry is zero then this will be ignored. If RetryPolicy is nil then this will be ignored.
	// It can use customized backoff policy, if MaxRetry is set and RetryPolicy is set and BackOffPolicy is nil, then default will be used.
	BackOffPolicy func(attempt int, minWait time.Duration, maxWait time.Duration) time.Duration
	// MinBackOff minimum wait for backoff. If nil then default will be set.
	MinBackOff *time.Duration
	// MaxBackOff maximum wait for backoff. If nil then default will be set
	MaxBackOff *time.Duration

	// Transport Optional. If you want to specify your own RoundTrip logic. Otherwise will be set to http.DefaultTransport.
	// If MaxRetry is more than zero, then this Transport will be executed after retry RoundTripper.
	Transport http.RoundTripper
}

type Request

type Request struct {
	BaseURL   string
	Header    http.Header
	URLValues url.Values             // for get method
	Body      map[string]interface{} // for x-www-form-urlencoded, json payload, and multipart/form non-binary data
	Files     []File                 // for multipart/form binary data

	RequestID string // unique identifier for each request. E.g. uuid v4. If empty, then will be set automatically using uuid v4.
}

func (*Request) FormURLEncoded

func (r *Request) FormURLEncoded() (io.Reader, error)

FormURLEncoded create url encoded from Body.

func (*Request) JSON

func (r *Request) JSON() (io.Reader, error)

JSON create application/json payload from body

func (*Request) MultipartForm

func (r *Request) MultipartForm() (io.Reader, error)

MultipartForm create multipart/form non-binary and binary data

func (*Request) URLQuery

func (r *Request) URLQuery() (string, error)

URLQuery create new url along with query string from URL values.

type Response

type Response struct {
	StatusCode int
	Status     string
	Header     http.Header
	Body       []byte
	Error      error
}

func Delete

func Delete(ctx context.Context, req *Request) *Response

func Get

func Get(ctx context.Context, req *Request) *Response
func Head(ctx context.Context, req *Request) *Response

func Options

func Options(ctx context.Context, req *Request) *Response

func PatchForm

func PatchForm(ctx context.Context, req *Request) *Response

func PatchJSON

func PatchJSON(ctx context.Context, req *Request) *Response

func PatchMultipart

func PatchMultipart(ctx context.Context, req *Request) *Response

func PostForm

func PostForm(ctx context.Context, req *Request) *Response

func PostJSON

func PostJSON(ctx context.Context, req *Request) *Response

func PostMultipart

func PostMultipart(ctx context.Context, req *Request) *Response

func PutForm

func PutForm(ctx context.Context, req *Request) *Response

func PutJSON

func PutJSON(ctx context.Context, req *Request) *Response

func PutMultipart

func PutMultipart(ctx context.Context, req *Request) *Response

func (*Response) Err

func (r *Response) Err() error

Err return response error.

func (*Response) Scan

func (r *Response) Scan(destination interface{}) error

Scan fetch r.Body into destination in form of structure or type.

func (*Response) String

func (r *Response) String() (string, error)

String convert response body to string.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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