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 Base64StdEncoding(base64Str string) io.Reader
- func ConnectUnmarshal(uri string, data, d any, args ...ArgsFunc) (err error)
- func DeleteUnmarshal(uri string, data, d any, args ...ArgsFunc) (err error)
- func GetUnmarshal(uri string, data, d any, args ...ArgsFunc) (err error)
- func HeadUnmarshal(uri string, data, d any, args ...ArgsFunc) (err 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 OptionsUnmarshal(uri string, data, d any, args ...ArgsFunc) (err error)
- func PatchUnmarshal(uri string, data, d any, args ...ArgsFunc) (err error)
- func PostFormUnmarshal(uri string, data url.Values, d any, args ...ArgsFunc) (err error)
- func PostFormWithFilesUnmarshal(uri string, data url.Values, d any, args ...ArgsFunc) (err error)
- func PostJsonUnmarshal(uri string, data, d any, args ...ArgsFunc) (err error)
- func PostUnmarshal(uri string, data, d any, args ...ArgsFunc) (err error)
- func PutUnmarshal(uri string, data, d any, args ...ArgsFunc) (err error)
- func RequestRoute(route IRoute) error
- func RequestUnmarshal(method, uri string, data, d any, args ...ArgsFunc) (err error)
- func Sha1(str string) string
- func Sha256(str string) string
- func ToString(any any) string
- func TraceUnmarshal(uri string, data, d any, args ...ArgsFunc) (err error)
- func URLDecode(str string) (string, error)
- func URLEncode(str string) string
- func Uri(uri string, query ...url.Values) *url.URL
- func UrlValues(uvs ...url.Values) url.Values
- type ArgsFunc
- func Debug() ArgsFunc
- func SetTLSConfig(tlsConfig *tls.Config) ArgsFunc
- func WithBasicAuth(username, password string) ArgsFunc
- func WithContentType(contentType string) ArgsFunc
- func WithCookie(k, v string) ArgsFunc
- func WithCookieString(cookies string) ArgsFunc
- func WithCookies(cookies map[string]string) ArgsFunc
- func WithHeader(header, value string) ArgsFunc
- func WithHeaders(headers map[string]string) ArgsFunc
- func WithProxyUrl(proxyURL string) ArgsFunc
- func WithTLSKeyCrt(crtFile, keyFile string) ArgsFunc
- func WithToken(token string, Type ...string) ArgsFunc
- func WithUserAgent(userAgent string) ArgsFunc
- type Client
- func (c *Client) AsForm() *Client
- func (c *Client) AsJson() *Client
- func (c *Client) AsStream() *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) PostFormWithFiles(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) WithCheckRedirect(fn func(req *http.Request, via []*http.Request) error)
- 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 IRoute
- type MiddlewareFunc
- type ReadCloser
- type ReadStreamArgs
- type RedirectPolicy
- type RedirectPolicyFunc
- type Response
- func Connect(uri string, data any, args ...ArgsFunc) (*Response, error)
- func Delete(uri string, data any, args ...ArgsFunc) (*Response, error)
- func Get(uri string, data any, args ...ArgsFunc) (*Response, error)
- func Head(uri string, data any, args ...ArgsFunc) (*Response, error)
- func Options(uri string, data any, args ...ArgsFunc) (*Response, error)
- func Patch(uri string, data any, args ...ArgsFunc) (*Response, error)
- func Post(uri string, data any, args ...ArgsFunc) (*Response, error)
- func PostForm(uri string, data url.Values, args ...ArgsFunc) (*Response, error)
- func PostFormWithFiles(uri string, data url.Values, args ...ArgsFunc) (*Response, error)
- func PostJson(uri string, data any, args ...ArgsFunc) (*Response, error)
- func Put(uri string, data any, args ...ArgsFunc) (*Response, error)
- func Request(method, uri string, data any, args ...ArgsFunc) (*Response, error)
- func Trace(uri string, data any, args ...ArgsFunc) (*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) ReadStream(readStreamArgs ReadStreamArgs) uint
- func (r *Response) TraceInfo() TraceInfo
- func (r *Response) Unmarshal(d any) error
- type ResponseError
- type Route
- 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 Base64StdEncoding ¶ added in v0.0.4
func ConnectUnmarshal ¶ added in v0.0.6
func DeleteUnmarshal ¶ added in v0.0.6
func GetUnmarshal ¶ added in v0.0.6
func HeadUnmarshal ¶ added in v0.0.6
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 Md5Reader ¶ added in v0.0.2
Md5Reader f, _ := os.Open("./_example/1.jpeg") f.Seek(0, 0) requests.Md5Reader(f)
func NewReadCloser ¶
func NewReadCloser(content []byte, repeatable bool) io.ReadCloser
NewReadCloser creates and returns a RepeatReadCloser object.
func OptionsUnmarshal ¶ added in v0.0.6
func PatchUnmarshal ¶ added in v0.0.6
func PostFormUnmarshal ¶ added in v0.0.6
func PostFormWithFilesUnmarshal ¶ added in v0.0.6
func PostJsonUnmarshal ¶ added in v0.0.6
func PostUnmarshal ¶ added in v0.0.6
func PutUnmarshal ¶ added in v0.0.6
func RequestRoute ¶ added in v0.0.6
RequestRoute
route := &requests.Route{ Uri: "https://api.github.com/users/github", Method: http.MethodGet, D: &tests.GitHubUser{}, } _ = requests.RequestRoute(route) fmt.Println(route.GetD().(*tests.GitHubUser))
func RequestUnmarshal ¶ added in v0.0.6
func TraceUnmarshal ¶ added in v0.0.6
Types ¶
type ArgsFunc ¶ added in v0.0.3
type ArgsFunc func(client *Client)
func SetTLSConfig ¶ added in v0.0.3
func WithBasicAuth ¶ added in v0.0.3
func WithContentType ¶ added in v0.0.3
func WithCookie ¶ added in v0.0.3
func WithCookieString ¶ added in v0.0.3
func WithCookies ¶ added in v0.0.3
func WithHeader ¶ added in v0.0.3
func WithHeaders ¶ added in v0.0.3
func WithProxyUrl ¶ added in v0.0.3
func WithTLSKeyCrt ¶ added in v0.0.3
func WithUserAgent ¶ added in v0.0.3
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) PostFormWithFiles ¶ added in v0.0.4
func (c *Client) PostFormWithFiles(ctx context.Context, uri string, data url.Values) (*Response, error)
PostFormWithFiles 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) WithCheckRedirect ¶ added in v0.0.6
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 ReadStreamArgs ¶ added in v0.0.5
type ReadStreamArgs struct { DataPrefix []byte ErrorPrefix []byte EndPrefix []byte Callback func(line []byte) }
ReadStreamArgs
openai chatgpt: requests.ReadStreamArgs{ DataPrefix: []byte("data: "), ErrorPrefix: []byte(`data: {"error":`), EndPrefix: []byte("[DONE]"), Callback: func(line []byte) { fmt.Println(string(line)) }, }
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 PostFormWithFiles ¶ added in v0.0.4
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.
func (*Response) ReadStream ¶ added in v0.0.5
func (r *Response) ReadStream(readStreamArgs ReadStreamArgs) uint
type ResponseError ¶
func (*ResponseError) Error ¶
func (e *ResponseError) Error() string
type Route ¶ added in v0.0.6
type Route struct {
Method, Uri string
Header, Cookies map[string]string
TlsConfig *tls.Config
Body, D any
}
func (*Route) GetCookies ¶ added in v0.0.6
func (*Route) GetTlsConfig ¶ added in v0.0.6
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 }