Documentation ¶
Index ¶
- Constants
- Variables
- func Base64Decode(str string) (string, error)
- func Base64Encode(str string) string
- func Base64File(path string) (string, error)
- func Base64Reader(reader io.Reader) (string, error)
- func HttpBuildQuery(params map[string]any, parentKey string) string
- func IsJSONType(s string) bool
- func IsMatchString(expr string, s string) bool
- func IsXMLType(s string) bool
- func MapCookiesToString(cookies map[string]string, cookieStr string) string
- func Md5(str string) string
- func Md5File(path string) (string, error)
- func Md5Reader(reader io.Reader) (string, error)
- func NewReadCloser(content []byte, repeatable bool) io.ReadCloser
- func Sha1(str string) string
- func Sha256(str string) string
- func ToString(any any) string
- func URLDecode(str string) (string, error)
- func URLEncode(str string) string
- func Uri(uri string, query ...url.Values) *url.URL
- type Client
- func (c *Client) AsForm() *Client
- func (c *Client) AsJson() *Client
- func (c *Client) AsXml() *Client
- func (c *Client) BrowserMode() *Client
- func (c *Client) Clone() *Client
- func (c *Client) Connect(ctx context.Context, uri string, data any) (*Response, error)
- func (c *Client) Debug() *Client
- func (c *Client) Delete(ctx context.Context, uri string, data any) (*Response, error)
- func (c *Client) DoRequest(ctx context.Context, method, uri string, body any) (response *Response, err error)
- func (c *Client) EnableTrace() *Client
- func (c *Client) Get(ctx context.Context, uri string, data any) (*Response, error)
- func (c *Client) Head(ctx context.Context, uri string, data any) (*Response, error)
- func (c *Client) Next(req *http.Request) (*Response, error)
- func (c *Client) OnAfterRequest(callback requestCallback) *Client
- func (c *Client) OnBeforeRequest(callback clientCallback) *Client
- func (c *Client) OnError(h ErrorHook) *Client
- func (c *Client) OnPanic(h ErrorHook) *Client
- func (c *Client) OnResponse(callback responseCallback) *Client
- func (c *Client) OnSuccess(h SuccessHook) *Client
- func (c *Client) Options(ctx context.Context, uri string, data any) (*Response, error)
- func (c *Client) Patch(ctx context.Context, uri string, data any) (*Response, error)
- func (c *Client) Post(ctx context.Context, uri string, data any) (*Response, error)
- func (c *Client) PostForm(ctx context.Context, uri string, data url.Values) (*Response, error)
- func (c *Client) PostJson(ctx context.Context, uri string, data any) (*Response, error)
- func (c *Client) Put(ctx context.Context, uri string, data any) (*Response, error)
- func (c *Client) SetJSONMarshaler(marshaler func(v any) ([]byte, error)) *Client
- func (c *Client) SetJSONUnmarshaler(unmarshaler func(data []byte, v any) error) *Client
- func (c *Client) SetPrefix(prefix string) *Client
- func (c *Client) SetRetry(retryCount int, retryWaitTime time.Duration) *Client
- func (c *Client) SetTLSConfig(tlsConfig *tls.Config) *Client
- func (c *Client) SetXMLMarshaler(marshaler func(v any) ([]byte, error)) *Client
- func (c *Client) SetXMLUnmarshaler(unmarshaler func(data []byte, v any) error) *Client
- func (c *Client) Timeout(t time.Duration) *Client
- func (c *Client) Trace(ctx context.Context, uri string, data any) (*Response, error)
- func (c *Client) Unmarshal(contentType string, b []byte, d any) (err error)
- func (c *Client) Use(middlewares ...MiddlewareFunc) *Client
- func (c *Client) WitchHttpClient(client *http.Client) *Client
- func (c *Client) WithBasicAuth(username, password string) *Client
- func (c *Client) WithContentType(contentType string) *Client
- func (c *Client) WithCookie(k, v string) *Client
- func (c *Client) WithCookieJar(jar http.CookieJar) *Client
- func (c *Client) WithCookieString(cookie string) *Client
- func (c *Client) WithCookies(cookies map[string]string) *Client
- func (c *Client) WithHeader(header, value string) *Client
- func (c *Client) WithHeaderVerbatim(header, value string) *Client
- func (c *Client) WithHeaders(headers map[string]string) *Client
- func (c *Client) WithProxyUrl(proxyURL string) *Client
- func (c *Client) WithRedirectLimit(redirectLimit int) *Client
- func (c *Client) WithRedirectPolicy(policies ...any) *Client
- func (c *Client) WithTLSKeyCrt(crtFile, keyFile string) *Client
- func (c *Client) WithToken(token string, Type ...string) *Client
- func (c *Client) WithUserAgent(userAgent string) *Client
- type ErrorHook
- type MiddlewareFunc
- type ReadCloser
- type RedirectPolicy
- type RedirectPolicyFunc
- type Response
- func Connect(uri string, data any, args ...func(client *Client)) (*Response, error)
- func Delete(uri string, data any, args ...func(client *Client)) (*Response, error)
- func Get(uri string, data any, args ...func(client *Client)) (*Response, error)
- func Head(uri string, data any, args ...func(client *Client)) (*Response, error)
- func Options(uri string, data any, args ...func(client *Client)) (*Response, error)
- func Patch(uri string, data any, args ...func(client *Client)) (*Response, error)
- func Post(uri string, data any, args ...func(client *Client)) (*Response, error)
- func PostForm(uri string, data url.Values, args ...func(client *Client)) (*Response, error)
- func PostJson(uri string, data any, args ...func(client *Client)) (*Response, error)
- func Put(uri string, data any, args ...func(client *Client)) (*Response, error)
- func Request(method, uri string, data any, args ...func(client *Client)) (*Response, error)
- func Trace(uri string, data any, args ...func(client *Client)) (*Response, error)
- func (r *Response) Close() error
- func (r *Response) ContentType() string
- func (r *Response) GetCookie(key string) string
- func (r *Response) GetCookieMap() map[string]string
- func (r *Response) GetCookieString() string
- func (r *Response) IsError() bool
- func (r *Response) IsSuccess() bool
- func (r *Response) ReadAll() []byte
- func (r *Response) ReadAllString() string
- func (r *Response) TraceInfo() TraceInfo
- func (r *Response) Unmarshal(d any) error
- type ResponseError
- type SuccessHook
- type TraceInfo
Constants ¶
const ( HttpHeaderUserAgent = `User-Agent` HttpHeaderContentType = `Content-Type` HttpHeaderContentTypeJson = `application/json` HttpHeaderContentTypeXml = `application/xml` HttpHeaderContentTypeForm = `application/x-www-form-urlencoded` )
Variables ¶
var (
DefaultClient = New()
)
var (
ErrAutoRedirectDisabled = errors.New("auto redirect is disabled")
)
Functions ¶
func Base64Decode ¶ added in v0.0.2
func Base64Encode ¶ added in v0.0.2
func Base64File ¶ added in v0.0.2
func HttpBuildQuery ¶
HttpBuildQuery Generate get request parameters
func IsJSONType ¶
IsJSONType method is to check JSON content type or not
func IsMatchString ¶
func MapCookiesToString ¶ added in v0.0.2
func NewReadCloser ¶
func NewReadCloser(content []byte, repeatable bool) io.ReadCloser
NewReadCloser creates and returns a RepeatReadCloser object.
Types ¶
type Client ¶
func NewHttpClient ¶
func (*Client) AsForm ¶
AsForm is a chaining function, which sets the HTTP content type as "application/x-www-form-urlencoded" for the next request.
func (*Client) AsJson ¶
AsJson is a chaining function, which sets the HTTP content type as "application/json" for the next request.
Note that it also checks and encodes the parameter to JSON format automatically.
func (*Client) AsXml ¶
AsXml is a chaining function, which sets the HTTP content type as "application/xml" for the next request.
Note that it also checks and encodes the parameter to XML format automatically.
func (*Client) BrowserMode ¶
BrowserMode enables browser mode of the client. When browser mode is enabled, it automatically saves and sends cookie content from and to server.
func (*Client) Connect ¶
Connect send CONNECT request and returns the response object. Note that the response object MUST be closed if it'll never be used.
func (*Client) Delete ¶
Delete send DELETE request and returns the response object. Note that the response object MUST be closed if it'll never be used.
func (*Client) EnableTrace ¶
func (*Client) Get ¶
Get send GET request and returns the response object. Note that the response object MUST be closed if it'll never be used.
func (*Client) Head ¶
Head send HEAD request and returns the response object. Note that the response object MUST be closed if it'll never be used.
func (*Client) OnAfterRequest ¶
OnAfterRequest method appends request callback into the before request chain.
client.OnAfterRequest(func(client *requests.Client, request *http.Request) error{ // Now you have access to Client and Request instance // manipulate it as per your need return nil // if its success otherwise return error })
func (*Client) OnBeforeRequest ¶
OnBeforeRequest method appends request callback into the before request chain.
client.OnBeforeRequest(func(c *requests.Client) error { // Now you have access to Client and Request instance // manipulate it as per your need return nil // if its success otherwise return error })
func (*Client) OnError ¶
OnError method adds a callback that will be run whenever a request execution fails. This is called after all retries have been attempted (if any). If there was a response from the server, the error will be wrapped in *ResponseError which has the last response received from the server.
client.OnError(func(*http.Request, error){ if v, ok := err.(*requests.ResponseError); ok { // Do something with v.Response } // Log the error, increment a metric, etc... })
Out of the OnSuccess, OnError, OnInvalid, OnPanic callbacks, exactly one set will be invoked for each call to Request.Execute() that comletes.
func (*Client) OnPanic ¶
OnPanic method adds a callback that will be run whever a request execution panics.
Out of the OnSuccess, OnError, OnInvalid, OnPanic callbacks, exactly one set will be invoked for each call to Request.Execute() that completes. If an OnSuccess, OnError, or OnInvalid callback panics, then the exactly one rule can be violated.
func (*Client) OnResponse ¶
OnResponse method appends response callback into the after response chain.
client.OnResponse(func(request *http.Request, response *requests.Response) error { // Now you have access to Client and Response instance // manipulate it as per your need return nil // if its success otherwise return error })
func (*Client) OnSuccess ¶
func (c *Client) OnSuccess(h SuccessHook) *Client
OnSuccess method adds a callback that will be run whenever a request execution succeeds. This is called after all retries have been attempted (if any).
Out of the OnSuccess, OnError, OnInvalid, OnPanic callbacks, exactly one set will be invoked for each call to Request.Execute() that comletes.
func (*Client) Options ¶
Options send OPTIONS request and returns the response object. Note that the response object MUST be closed if it'll never be used.
func (*Client) Patch ¶
Patch send PATCH request and returns the response object. Note that the response object MUST be closed if it'll never be used.
func (*Client) Post ¶
Post sends request using HTTP method POST and returns the response object. Note that the response object MUST be closed if it'll never be used.
func (*Client) PostForm ¶
PostForm is different from net/http.PostForm. It's a wrapper of Post method, which sets the Content-Type as "multipart/form-data;". and It will automatically set boundary characters for the request body and Content-Type.
It's Seem like the following case:
Content-Type: multipart/form-data; boundary=----Boundarye4Ghaog6giyQ9ncN
And form data is like: ------Boundarye4Ghaog6giyQ9ncN Content-Disposition: form-data; name="checkType"
none
It's used for sending form data. Note that the response object MUST be closed if it'll never be used.
func (*Client) Put ¶
Put send PUT request and returns the response object. Note that the response object MUST be closed if it'll never be used.
func (*Client) SetJSONMarshaler ¶
SetJSONMarshaler method sets the JSON marshaler function to marshal the request body. By default, Resty uses `encoding/json` package to marshal the request body.
func (*Client) SetJSONUnmarshaler ¶
SetJSONUnmarshaler method sets the JSON unmarshaler function to unmarshal the response body. By default, Resty uses `encoding/json` package to unmarshal the response body.
func (*Client) SetRetry ¶
SetRetry is a chaining function, which sets retry count and interval when failure for next request.
func (*Client) SetTLSConfig ¶
SetTLSConfig sets the TLS configuration of client.
func (*Client) SetXMLMarshaler ¶
SetXMLMarshaler method sets the XML marshaler function to marshal the request body. By default, Resty uses `encoding/xml` package to marshal the request body.
func (*Client) SetXMLUnmarshaler ¶
SetXMLUnmarshaler method sets the XML unmarshaler function to unmarshal the response body. By default, Resty uses `encoding/xml` package to unmarshal the response body.
func (*Client) Trace ¶
Trace send TRACE request and returns the response object. Note that the response object MUST be closed if it'll never be used.
func (*Client) Use ¶
func (c *Client) Use(middlewares ...MiddlewareFunc) *Client
Use adds one or more middleware handlers to client.
func (*Client) WitchHttpClient ¶ added in v0.0.2
func (*Client) WithBasicAuth ¶
WithBasicAuth Specify the basic authentication username and password for the request.
func (*Client) WithContentType ¶
WithContentType is a chaining function, which sets HTTP content type for the next request.
func (*Client) WithCookie ¶
func (*Client) WithCookieString ¶
func (*Client) WithHeader ¶
WithHeader method sets a single header field and its value in the client instance. These headers will be applied to all requests raised from this client instance. Also it can be overridden at request level header options.
WithHeader("Content-Type", "application/json"). WithHeader("Accept", "application/json")
func (*Client) WithHeaderVerbatim ¶
WithHeaderVerbatim method is to set a single header field and its value verbatim in the current request.
For Example: To set `all_lowercase` and `UPPERCASE` as `available`.
WithHeaderVerbatim("all_lowercase", "available"). WithHeaderVerbatim("UPPERCASE", "available")
Also you can override header value, which was set at client instance level.
func (*Client) WithHeaders ¶
WithHeaders method sets multiple headers field and its values at one go in the client instance. These headers will be applied to all requests raised from this client instance. Also it can be overridden at request level headers options. For Example: To set `Content-Type` and `Accept` as `application/json`
WithHeaders(map[string]string{ "Content-Type": "application/json", "Accept": "application/json", })
func (*Client) WithProxyUrl ¶
WithProxyUrl set proxy for the client. This func will do nothing when the parameter `proxyURL` is empty or in wrong pattern. The correct pattern is like `http://USER:PASSWORD@IP:PORT` or `socks5://USER:PASSWORD@IP:PORT`. Only `http` and `socks5` proxies are supported currently.
func (*Client) WithRedirectLimit ¶
WithRedirectLimit limits the number of jumps.
func (*Client) WithRedirectPolicy ¶
WithRedirectPolicy method sets the client redirect poilicy. Resty provides ready to use redirect policies. Wanna create one for yourself refer to `redirect.go`.
WithRedirectLimit(20) WithRedirectPolicy(FlexibleRedirectPolicy(20)) WithRedirectPolicy(FlexibleRedirectPolicy(20), DomainCheckRedirectPolicy("host1.com", "host2.net"))
func (*Client) WithTLSKeyCrt ¶
WithTLSKeyCrt sets the certificate and key file for TLS configuration of client.
func (*Client) WithUserAgent ¶
type MiddlewareFunc ¶
MiddlewareFunc middleware handler func
type ReadCloser ¶
type ReadCloser struct {
// contains filtered or unexported fields
}
ReadCloser implements the io.ReadCloser interface which is used for reading request body content multiple times.
Note that it cannot be closed.
func (*ReadCloser) Close ¶
func (b *ReadCloser) Close() error
Close implements the io.ReadCloser interface.
type RedirectPolicy ¶
RedirectPolicy to regulate the redirects in the resty client. Objects implementing the RedirectPolicy interface can be registered as
Apply function should return nil to continue the redirect jounery, otherwise return error to stop the redirect.
func DomainCheckRedirectPolicy ¶
func DomainCheckRedirectPolicy(hostnames ...string) RedirectPolicy
DomainCheckRedirectPolicy is convenient method to define domain name redirect rule in resty client. Redirect is allowed for only mentioned host in the policy.
requests.WithRedirectPolicy(DomainCheckRedirectPolicy("host1.com", "host2.org", "host3.net"))
func FlexibleRedirectPolicy ¶
func FlexibleRedirectPolicy(noOfRedirect int) RedirectPolicy
FlexibleRedirectPolicy is convenient method to create No of redirect policy for HTTP client.
requests.SetRedirectPolicy(FlexibleRedirectPolicy(20))
func NoRedirectPolicy ¶
func NoRedirectPolicy() RedirectPolicy
NoRedirectPolicy is used to disable redirects in the HTTP client
requests.WithRedirectPolicy(NoRedirectPolicy())
type RedirectPolicyFunc ¶
The RedirectPolicyFunc type is an adapter to allow the use of ordinary functions as RedirectPolicy. If f is a function with the appropriate signature, RedirectPolicyFunc(f) is a RedirectPolicy object that calls f.
type Response ¶
type Response struct { *http.Response // Response is the underlying http.Response object of certain request. // contains filtered or unexported fields }
func (*Response) ContentType ¶
ContentType response header Content-Type
func (*Response) GetCookieMap ¶
func (*Response) GetCookieString ¶ added in v0.0.2
func (*Response) IsError ¶
IsError method returns true if HTTP status `code >= 400` otherwise false.
func (*Response) IsSuccess ¶
IsSuccess method returns true if HTTP status `code >= 200 and <= 299` otherwise false.
func (*Response) ReadAllString ¶
ReadAllString retrieves and returns the response content as string.
type ResponseError ¶
func (*ResponseError) Error ¶
func (e *ResponseError) Error() string
type SuccessHook ¶
type TraceInfo ¶
type TraceInfo struct { // DNSLookup is a duration that transport took to perform // DNS lookup. DNSLookup time.Duration // ConnTime is a duration that took to obtain a successful connection. ConnTime time.Duration // TCPConnTime is a duration that took to obtain the TCP connection. TCPConnTime time.Duration // TLSHandshake is a duration that TLS handshake took place. TLSHandshake time.Duration // ServerTime is a duration that server took to respond first byte. ServerTime time.Duration // ResponseTime is a duration since first response byte from server to // request completion. ResponseTime time.Duration // TotalTime is a duration that total request took end-to-end. TotalTime time.Duration // IsConnReused is whether this connection has been previously // used for another HTTP request. IsConnReused bool // IsConnWasIdle is whether this connection was obtained from an // idle pool. IsConnWasIdle bool // ConnIdleTime is a duration how long the connection was previously // idle, if IsConnWasIdle is true. ConnIdleTime time.Duration // RequestAttempt is to represent the request attempt made during a Resty // request execution flow, including retry count. RequestAttempt int // RemoteAddr returns the remote network address. RemoteAddr net.Addr }