http

package
v0.0.0-...-5bb4afb Latest Latest
Warning

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

Go to latest
Published: Dec 4, 2023 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DefaultLogger

func DefaultLogger(ctx context.Context, info *TransportInfo)

func DefaultPooledTransport

func DefaultPooledTransport() *syshttp.Transport

func RepeatableReadRequest

func RepeatableReadRequest(res *syshttp.Request) ([]byte, error)

func RepeatableReadResponse

func RepeatableReadResponse(res *syshttp.Response) ([]byte, error)

Types

type Client

type Client interface {
	EnableCookie() Client
	SetTimeout(tm time.Duration) Client
	SetMock(fn Endpoint) Client
	SetDebug(w HTTPLogger) Client
	SetRetry(opt RetryOption) Client
	SetHeader(name, val string) Client
	SetHeaders(hder map[string]string) Client
	MakeDoer(opts ...Option) Doer
	AddMiddleware(m ...Middleware) Client
	AddBeforeHook(hook func(*http.Request)) Client
	AddAfterHook(hook func(*http.Response)) Client
	DoRequest(req *http.Request, opts ...Option) *Response
	Do(ctx context.Context, method string, uri string, body io.Reader, opts ...Option) *Response
	Download(ctx context.Context, uri string, w io.Writer, opts ...Option) error
	Get(ctx context.Context, uri string, opts ...Option) *Response
	Post(ctx context.Context, urlstr string, data []byte, opts ...Option) *Response
	Put(ctx context.Context, urlstr string, data []byte, opts ...Option) *Response
	PostForm(ctx context.Context, urlstr string, data map[string]interface{}, opts ...Option) *Response
	PostJSON(ctx context.Context, urlstr string, data interface{}, opts ...Option) *Response
}

func NewClient

func NewClient() Client

NewClient new client

type Doer

type Doer func(*syshttp.Request) (*syshttp.Response, error)

func (Doer) Do

func (hd Doer) Do(req *syshttp.Request) (*syshttp.Response, error)

type Endpoint

type Endpoint func(*syshttp.Request) (*syshttp.Response, error)

type HTTPLogger

type HTTPLogger func(context.Context, *TransportInfo)

type Middleware

type Middleware func(Endpoint) Endpoint

func MiddlewareCheckStatusCode

func MiddlewareCheckStatusCode(fn func(int) bool) Middleware

func MiddlewareSetAllowedStatusCode

func MiddlewareSetAllowedStatusCode(codes ...int) Middleware

func MiddlewareSetBlockedStatusCode

func MiddlewareSetBlockedStatusCode(codes ...int) Middleware

func RetryMiddleware

func RetryMiddleware(retryOpt RetryOption) Middleware

type Option

type Option func(*options)

func WithAfterHook

func WithAfterHook(hook func(*syshttp.Response)) Option

func WithBeforeHook

func WithBeforeHook(hook func(*syshttp.Request)) Option

func WithBody

func WithBody(w io.Writer) Option

func WithHeader

func WithHeader(k, v string) Option

func WithHeaders

func WithHeaders(hdr map[string]string) Option

func WithMiddleware

func WithMiddleware(m Middleware) Option

option middlewares

func WithRetry

func WithRetry(opt RetryOption) Option

func WithTimeout

func WithTimeout(tm time.Duration) Option

type Request

type Request struct {
	*syshttp.Request
}

func FromRequest

func FromRequest(req *syshttp.Request) *Request

func (*Request) AddRetryHook

func (req *Request) AddRetryHook(hook RetryHook)

type Response

type Response struct {
	*syshttp.Response
	Err error
}

func (*Response) GetBody

func (r *Response) GetBody() ([]byte, error)

func (*Response) MustGetBody

func (r *Response) MustGetBody() []byte

func (*Response) Result

func (r *Response) Result() (*syshttp.Response, error)

func (*Response) Save

func (r *Response) Save(w io.Writer) error

func (*Response) Unmarshal

func (r *Response) Unmarshal(obj interface{}) error

type RetryHook

type RetryHook func(*syshttp.Request, int)

type RetryOption

type RetryOption struct {
	RetryMax      int
	RetryWaitMin  time.Duration                                     // optional
	RetryWaitMax  time.Duration                                     // optional
	CheckResponse func(*syshttp.Response, error) (shouldRetry bool) // optional
}

type ServerOnAnyPort

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

ServerOnAnyPort handle

func ListenOnAnyPort

func ListenOnAnyPort(h nethttp.Handler) *ServerOnAnyPort

ListenOnAnyPort serve http on any port

func (*ServerOnAnyPort) Addr

func (sp *ServerOnAnyPort) Addr() string

Addr return :port

func (*ServerOnAnyPort) Close

func (sp *ServerOnAnyPort) Close() error

func (*ServerOnAnyPort) Serve

func (sp *ServerOnAnyPort) Serve() error

Serve http service

type TransportEntity

type TransportEntity struct {
	Header http.Header
	Body   func() []byte
}

type TransportInfo

type TransportInfo struct {
	Method   string
	URL      string
	Status   string
	StartAt  time.Time
	Cost     time.Duration
	Err      error
	Request  *TransportEntity
	Response *TransportEntity
}

Jump to

Keyboard shortcuts

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