client

package
v1.9.4 Latest Latest
Warning

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

Go to latest
Published: Oct 8, 2025 License: MIT Imports: 16 Imported by: 0

Documentation

Overview

nolint

nolint:mnd

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrEmptyRequestUrl = errors.New("request url is empty")
)
View Source
var (
	ReadingResponseMetricHookKey = ReadingResponseMetricHook{}
)

nolint:gochecknoglobals

Functions

This section is empty.

Types

type BasicAuth added in v1.5.0

type BasicAuth struct {
	Username string
	Password string
}

type Client

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

func Default

func Default(opts ...Option) *Client

func New

func New(opts ...Option) *Client

func NewWithClient

func NewWithClient(cli *http.Client, opts ...Option) *Client

func (*Client) Delete

func (c *Client) Delete(url string) *RequestBuilder

func (*Client) Get

func (c *Client) Get(url string) *RequestBuilder

func (*Client) GlobalRequestConfig

func (c *Client) GlobalRequestConfig() *GlobalRequestConfig

func (*Client) Patch

func (c *Client) Patch(url string) *RequestBuilder

func (*Client) Post

func (c *Client) Post(url string) *RequestBuilder

func (*Client) Put

func (c *Client) Put(url string) *RequestBuilder

type ClientBalancer added in v1.4.0

type ClientBalancer struct {
	*Client
	// contains filtered or unexported fields
}

func NewClientBalancer added in v1.4.0

func NewClientBalancer(initialHosts []string, opts ...ClientBalancerOption) *ClientBalancer

func (*ClientBalancer) Delete added in v1.4.0

func (c *ClientBalancer) Delete(method string) *RequestBuilder

func (*ClientBalancer) Execute added in v1.4.0

func (c *ClientBalancer) Execute(ctx context.Context, builder *RequestBuilder) (*Response, error)

func (*ClientBalancer) Get added in v1.4.0

func (c *ClientBalancer) Get(method string) *RequestBuilder

func (*ClientBalancer) Patch added in v1.4.0

func (c *ClientBalancer) Patch(method string) *RequestBuilder

func (*ClientBalancer) Post added in v1.4.0

func (c *ClientBalancer) Post(method string) *RequestBuilder

func (*ClientBalancer) Put added in v1.4.0

func (c *ClientBalancer) Put(method string) *RequestBuilder

func (*ClientBalancer) Upgrade added in v1.4.0

func (c *ClientBalancer) Upgrade(hosts []string)

type ClientBalancerOption added in v1.4.0

type ClientBalancerOption func(c *clientBalancerOptions)

func WithClient added in v1.4.0

func WithClient(cli *http.Client) ClientBalancerOption

func WithClientOptions added in v1.4.0

func WithClientOptions(opts ...Option) ClientBalancerOption

WithClientOptions appends passed opts to clientOpts

func WithHttpsSchema added in v1.4.0

func WithHttpsSchema() ClientBalancerOption

type ErrorResponse

type ErrorResponse struct {
	Url        *url.URL
	StatusCode int
	Body       []byte
}

nolint:errname

func (ErrorResponse) Error

func (e ErrorResponse) Error() string

type GlobalRequestConfig

type GlobalRequestConfig struct {
	Timeout   time.Duration
	BaseUrl   string
	BasicAuth *BasicAuth
	Cookies   []*http.Cookie
	Headers   map[string]string
}

func NewGlobalRequestConfig

func NewGlobalRequestConfig() *GlobalRequestConfig

type Middleware

type Middleware func(next RoundTripper) RoundTripper

func RequestId

func RequestId() Middleware

type Option

type Option func(c *Client)

func WithMiddlewares

func WithMiddlewares(mws ...Middleware) Option

type ReadingResponseMetricHook

type ReadingResponseMetricHook struct{}

type Request

type Request struct {
	Raw *http.Request
	// contains filtered or unexported fields
}

func (*Request) Body

func (r *Request) Body() []byte

type RequestBodyWriter

type RequestBodyWriter interface {
	Write(req *http.Request, w io.Writer) error
}

type RequestBuilder

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

func NewRequestBuilder

func NewRequestBuilder(
	method string,
	url string,
	cfg *GlobalRequestConfig,
	execute func(ctx context.Context, req *RequestBuilder) (*Response, error),
) *RequestBuilder

func (*RequestBuilder) BaseUrl added in v1.4.0

func (b *RequestBuilder) BaseUrl(baseUrl string) *RequestBuilder

func (*RequestBuilder) BasicAuth added in v1.5.1

func (b *RequestBuilder) BasicAuth(ba BasicAuth) *RequestBuilder

func (*RequestBuilder) BearerAuth added in v1.7.0

func (b *RequestBuilder) BearerAuth(token string) *RequestBuilder

func (*RequestBuilder) Cookie

func (b *RequestBuilder) Cookie(cookie *http.Cookie) *RequestBuilder

func (*RequestBuilder) Do

func (b *RequestBuilder) Do(ctx context.Context) (*Response, error)

func (*RequestBuilder) DoAndReadBody

func (b *RequestBuilder) DoAndReadBody(ctx context.Context) ([]byte, int, error)

func (*RequestBuilder) DoWithoutResponse

func (b *RequestBuilder) DoWithoutResponse(ctx context.Context) error

func (*RequestBuilder) GetRequestUrl added in v1.8.2

func (b *RequestBuilder) GetRequestUrl() (string, error)

func (*RequestBuilder) Header

func (b *RequestBuilder) Header(name string, value string) *RequestBuilder

func (*RequestBuilder) JsonRequestBody

func (b *RequestBuilder) JsonRequestBody(value any) *RequestBuilder

func (*RequestBuilder) JsonResponseBody

func (b *RequestBuilder) JsonResponseBody(responsePtr any) *RequestBuilder

JsonResponseBody If response status code between 200 and 299, unmarshal response body to responsePtr

func (*RequestBuilder) QueryParams

func (b *RequestBuilder) QueryParams(queryParams map[string]any) *RequestBuilder

func (*RequestBuilder) RequestBody

func (b *RequestBuilder) RequestBody(body []byte) *RequestBuilder

func (*RequestBuilder) StatusCodeToError

func (b *RequestBuilder) StatusCodeToError() *RequestBuilder

StatusCodeToError If set and Response.IsSuccess is false, Do return ErrorResponse as error

func (*RequestBuilder) Timeout

func (b *RequestBuilder) Timeout(timeout time.Duration) *RequestBuilder

Timeout Set per request attempt timeout, default timeout 15 seconds

type Response

type Response struct {
	Raw *http.Response
	// contains filtered or unexported fields
}

func (*Response) Body

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

Body Read and return full response body Be careful, after calling Close returned data is no longer available Do not call close or copy slice if you want to use data outside the calling function

func (*Response) BodyCopy

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

BodyCopy Return copy of response body Slice is available after calling Close

func (*Response) Close

func (r *Response) Close()

Close Release all resources associated with Response (buffer, tcp connection, context) After call, bytes slice returned by Body can not be used

func (*Response) IsSuccess

func (r *Response) IsSuccess() bool

func (*Response) StatusCode

func (r *Response) StatusCode() int

type ResponseBodyReader

type ResponseBodyReader interface {
	Read(r io.Reader) error
}

type RoundTripper

type RoundTripper interface {
	RoundTrip(ctx context.Context, request *Request) (*Response, error)
}

type RoundTripperFunc

type RoundTripperFunc func(ctx context.Context, request *Request) (*Response, error)

func (RoundTripperFunc) RoundTrip

func (f RoundTripperFunc) RoundTrip(ctx context.Context, request *Request) (*Response, error)

Jump to

Keyboard shortcuts

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