Documentation
¶
Index ¶
- Constants
- Variables
- func CopyHeader(h http.Header) http.Header
- func CopyURL(u *url.URL) (URL *url.URL, err error)
- func Download(rawurl string, toFile string) error
- func GetHeader() http.Header
- func GetHeaderSingle(key string) string
- func GetProxyURL() *url.URL
- func GetProxyUrl() string
- func GetUserAgent() string
- func MergeHeaders(h1, h2 http.Header) http.Header
- func MergeQueryString(parsedURL *url.URL, parsedQuery string) (*url.URL, error)
- func NewCookieJar() (http.CookieJar, error)
- func ReplaceQueryString(parsedURL *url.URL, parsedQuery string) (*url.URL, error)
- func WrapErr(err error, msg string) error
- func WrapErrf(err error, format string, args ...interface{}) error
- type Cookies
- type Error
- type HandlerFunc
- type Logger
- type OptionFunc
- func OptionBasicAuth(username, password string) OptionFunc
- func OptionBody(v interface{}) OptionFunc
- func OptionBodyFormData(v interface{}) OptionFunc
- func OptionBodyJSON(v interface{}) OptionFunc
- func OptionBodyXML(v interface{}) OptionFunc
- func OptionBodyXWwwFormUrlencoded(v interface{}) OptionFunc
- func OptionCookies(cookies Cookies) OptionFunc
- func OptionHeader(v interface{}) OptionFunc
- func OptionHeaderSingle(k, v string) OptionFunc
- func OptionProxy(v interface{}) OptionFunc
- func OptionQueryString(v interface{}) OptionFunc
- func OptionRedirectNum(num int) OptionFunc
- func OptionTimeout(v time.Duration) OptionFunc
- type RedirectError
- type Request
- func (req *Request) BasicAuth() (username, password string, ok bool)
- func (req *Request) Context() context.Context
- func (req *Request) Copy() *Request
- func (req *Request) DisableTrace() *Request
- func (req *Request) EnableTrace() *Request
- func (req *Request) GetHeader() http.Header
- func (req *Request) GetHeaderSingle(key string) string
- func (req *Request) GetMethod() string
- func (req *Request) GetProxyURL() *url.URL
- func (req *Request) GetProxyUrl() string
- func (req *Request) GetTimeout() time.Duration
- func (req *Request) GetURL() *url.URL
- func (req *Request) GetUrl() string
- func (req *Request) GetUserAgent() string
- func (req *Request) SetBasicAuth(username, password string)
- func (req *Request) SetBody(params interface{}) *Request
- func (req *Request) SetBodyFormData(params interface{}) *Request
- func (req *Request) SetBodyJson(params interface{}) *Request
- func (req *Request) SetBodyXML(params interface{}) *Request
- func (req *Request) SetBodyXWwwFormUrlencoded(params interface{}) *Request
- func (req *Request) SetCharset(charset string) *Request
- func (req *Request) SetCookies(cookies Cookies) *Request
- func (req *Request) SetHeader(header http.Header) *Request
- func (req *Request) SetHeaderSingle(key, val string) *Request
- func (req *Request) SetHeaders(header http.Header) *Request
- func (req *Request) SetHost(host string) *Request
- func (req *Request) SetMethod(method string) *Request
- func (req *Request) SetProxyURL(u *url.URL) *Request
- func (req *Request) SetProxyUrl(rawurl string) *Request
- func (req *Request) SetQueryString(params interface{}) *Request
- func (req *Request) SetReferer(referer string) *Request
- func (req *Request) SetTimeout(t time.Duration) *Request
- func (req *Request) SetURL(u *url.URL) *Request
- func (req *Request) SetUrl(rawurl string) *Request
- func (req *Request) SetUserAgent(ua string) *Request
- func (req *Request) TraceInfo() TraceInfo
- func (req *Request) WithContext(ctx context.Context) *Request
- type Response
- func BuildResponse(resp *http.Response) (*Response, error)
- func Connect(rawurl string, ops ...OptionFunc) (*Response, error)
- func Delete(rawurl string, ops ...OptionFunc) (*Response, error)
- func Do(req *http.Request) (*Response, error)
- func Get(rawurl string, ops ...OptionFunc) (*Response, error)
- func Head(rawurl string, ops ...OptionFunc) (*Response, error)
- func Options(rawurl string, ops ...OptionFunc) (*Response, error)
- func Patch(rawurl string, ops ...OptionFunc) (*Response, error)
- func Post(rawurl string, ops ...OptionFunc) (*Response, error)
- func PostFormData(rawurl string, ops ...OptionFunc) (*Response, error)
- func Put(rawurl string, ops ...OptionFunc) (*Response, error)
- func Suck(req *Request, ops ...OptionFunc) (*Response, error)
- func (r *Response) GetBody() []byte
- func (r *Response) GetContextType() string
- func (r *Response) GetHeader() http.Header
- func (r *Response) GetHeaderSingle(key string) string
- func (r *Response) GetHtml() string
- func (r *Response) GetJson(v interface{}) error
- func (r *Response) GetXml(v interface{}) error
- func (r *Response) Read(p []byte) (n int, err error)
- func (r *Response) String() string
- func (r *Response) TraceInfo() TraceInfo
- type Session
- func DisableTrace() *Session
- func EnableTrace() *Session
- func InsecureSkipVerify(skip bool) *Session
- func NewSession(options ...*SessionOptions) *Session
- func SetBaseURL(url string) *Session
- func SetCheckRedirectHandler(handler func(req *http.Request, via []*http.Request) error) *Session
- func SetCookieJar(jar http.CookieJar) *Session
- func SetHeader(h http.Header) *Session
- func SetHeaderSingle(key, val string) *Session
- func SetLogger(l Logger) *Session
- func SetProxyHandler(handler func(req *http.Request) (*url.URL, error)) *Session
- func SetProxyURL(u *url.URL) *Session
- func SetProxyUrl(rawurl string) *Session
- func SetTimeout(t time.Duration) *Session
- func SetUserAgent(ua string) *Session
- func Use(middleware ...HandlerFunc) *Session
- func (session *Session) Connect(rawurl string, ops ...OptionFunc) (*Response, error)
- func (session *Session) Cookies(rawurl string) Cookies
- func (session *Session) Delete(rawurl string, ops ...OptionFunc) (*Response, error)
- func (session *Session) DisableTrace() *Session
- func (session *Session) Do(req *http.Request) (*Response, error)
- func (session *Session) Download(rawurl string, toFile string) error
- func (session *Session) EnableTrace() *Session
- func (session *Session) Get(rawurl string, ops ...OptionFunc) (*Response, error)
- func (session *Session) GetHeader() http.Header
- func (session *Session) GetHeaderSingle(key string) string
- func (session *Session) GetProxyURL() *url.URL
- func (session *Session) GetProxyUrl() string
- func (session *Session) GetUserAgent() string
- func (session *Session) Head(rawurl string, ops ...OptionFunc) (*Response, error)
- func (session *Session) InsecureSkipVerify(skip bool) *Session
- func (session *Session) Options(rawurl string, ops ...OptionFunc) (*Response, error)
- func (session *Session) Patch(rawurl string, ops ...OptionFunc) (*Response, error)
- func (session *Session) Post(rawurl string, ops ...OptionFunc) (*Response, error)
- func (session *Session) PostFormData(rawurl string, ops ...OptionFunc) (*Response, error)
- func (session *Session) Put(rawurl string, ops ...OptionFunc) (*Response, error)
- func (session *Session) SetBaseURL(url string) *Session
- func (session *Session) SetCheckRedirectHandler(handler func(req *http.Request, via []*http.Request) error) *Session
- func (session *Session) SetCookieJar(jar http.CookieJar) *Session
- func (session *Session) SetCookies(rawurl string, cookies Cookies)
- func (session *Session) SetHeader(h http.Header) *Session
- func (session *Session) SetHeaderSingle(key, val string) *Session
- func (session *Session) SetLogger(l Logger) *Session
- func (session *Session) SetProxyHandler(handler func(req *http.Request) (*url.URL, error)) *Session
- func (session *Session) SetProxyURL(u *url.URL) *Session
- func (session *Session) SetProxyUrl(rawurl string) *Session
- func (session *Session) SetTimeout(t time.Duration) *Session
- func (session *Session) SetUserAgent(ua string) *Session
- func (session *Session) Suck(req *Request, ops ...OptionFunc) (*Response, error)
- func (session *Session) Use(middleware ...HandlerFunc) *Session
- type SessionOptions
- type TraceInfo
Constants ¶
const ( // default redirect num DefaultRedirectNum = 10 // request context redirect num key name ContextRedirectNumKey = "redirectNum" )
const ContextProxyKey = "proxy"
request context proxy key name
Variables ¶
var ( ErrRequestBody = errors.New("request encode can`t coexists with PostForm") ErrTimeout = errors.New("reqeust timeout") )
Functions ¶
func GetHeaderSingle ¶
GetHeaderSingle get global header single
func MergeHeaders ¶
MergeHeaders merge Request headers and Session Headers. Request has higher priority.
func MergeQueryString ¶
MergeQueryString Get request merge url and query string encode.
func ReplaceQueryString ¶
ReplaceQueryString Get request replace url and query string encode.
Types ¶
type Cookies ¶
defined []http.Cookie alias Cookies
func NewCookiesWithString ¶
You should init it by using NewCookiesWithString like this:
cookies := quick.NewCookiesWithString( "key1=value1; key2=value2; key3=value3" )
Note: param is cookie string
type HandlerFunc ¶
type Logger ¶ added in v0.4.0
type Logger interface { Errorf(format string, v ...interface{}) Warnf(format string, v ...interface{}) Debugf(format string, v ...interface{}) }
Logger interface is to abstract the logging from quick. Gives control to the quick users, choice of the logger.
type OptionFunc ¶
type OptionFunc func(*Request)
OptionFunc request option func
func OptionBasicAuth ¶
func OptionBasicAuth(username, password string) OptionFunc
OptionBasicAuth HTTP Basic Authentication
func OptionBodyFormData ¶
func OptionBodyFormData(v interface{}) OptionFunc
OptionBodyFormData request body for post (FormData)
func OptionBodyJSON ¶ added in v0.4.1
func OptionBodyJSON(v interface{}) OptionFunc
OptionBodyJSON request body for post
func OptionBodyXML ¶ added in v0.4.1
func OptionBodyXML(v interface{}) OptionFunc
OptionBodyXML request body for post
func OptionBodyXWwwFormUrlencoded ¶ added in v0.4.1
func OptionBodyXWwwFormUrlencoded(v interface{}) OptionFunc
OptionBodyXWwwFormUrlencoded set request body x-www-form-urlencoded
func OptionCookies ¶
func OptionCookies(cookies Cookies) OptionFunc
OptionCookies set cookies to request
func OptionHeaderSingle ¶
func OptionHeaderSingle(k, v string) OptionFunc
OptionHeaderSingle set an http header to request
func OptionQueryString ¶
func OptionQueryString(v interface{}) OptionFunc
OptionQueryString request query string for get
func OptionRedirectNum ¶
func OptionRedirectNum(num int) OptionFunc
OptionRedirectNum set redirect num to request
func OptionTimeout ¶
func OptionTimeout(v time.Duration) OptionFunc
OptionTimeout set timeout to request
type RedirectError ¶
type RedirectError struct {
RedirectNum int
}
func (*RedirectError) Error ¶
func (e *RedirectError) Error() string
type Request ¶
type Request struct { Id uint64 URL *url.URL Method string Header http.Header // request headers Body io.Reader // request encode RedirectNum int // Number of redirects requested. default 5 Timeout time.Duration // request timeout Proxy *url.URL // request proxy url Cookies Cookies // request cookies // contains filtered or unexported fields }
Request http request payload
func ConvertHttpRequest ¶
ConvertHttpRequest convert http.Request To Request
func NewRequestWithContext ¶
NewRequestWithContext create a request instance with context.Context
func (*Request) BasicAuth ¶
BasicAuth returns the username and password provided in the request's Authorization header, if the request uses HTTP Basic Authentication. See RFC 2617, Section 2.
func (*Request) DisableTrace ¶ added in v0.4.0
DisableTrace method disables the Quick client trace. Refer to `Request.EnableTrace`.
Since v0.4.0
func (*Request) EnableTrace ¶ added in v0.4.0
EnableTrace method enables trace for the current request using `httptrace.ClientTrace` and provides insights.
resp, err := quick.EnableTrace().Get("https://httpbin.org/get") fmt.Println("Error:", err) fmt.Println("Trace Info:", resp.TraceInfo())
See `Request.EnableTrace` available too to get trace info for all requests.
Since v0.4.0
func (*Request) GetHeaderSingle ¶
GetHeaderSingle get request header single
func (*Request) GetProxyURL ¶
GetProxyURL get proxy url.URL for this request
func (*Request) GetProxyUrl ¶
GetProxyUrl get proxy url for this request
func (*Request) GetTimeout ¶
GetTimeout get request timeout
func (*Request) GetUserAgent ¶
GetUserAgent get request user-agent
func (*Request) SetBasicAuth ¶
SetBasicAuth sets the request's Authorization header to use HTTP Basic Authentication with the provided username and password.
With HTTP Basic Authentication the provided username and password are not encrypted.
Some protocols may impose additional requirements on pre-escaping the username and password. For instance, when used with OAuth2, both arguments must be URL encoded first with url.QueryEscape.
func (*Request) SetBodyFormData ¶
SetBodyFormData set POST body (FormData) to request
func (*Request) SetBodyJson ¶
SetBodyJson set POST body (RAW) to request
func (*Request) SetBodyXML ¶ added in v0.4.1
SetBodyXML set POST body (RAW) to request
func (*Request) SetBodyXWwwFormUrlencoded ¶
SetBodyXWwwFormUrlencoded set request body x-www-form-urlencoded
func (*Request) SetCharset ¶
SetCharset set request charset
func (*Request) SetCookies ¶
SetCookies set cookies to request sample:
quick.SetCookies( quick.NewCookiesWithString("key1=value1; key2=value2; key3=value3") )
func (*Request) SetHeaderSingle ¶
SetHeaderSingle set request header single
func (*Request) SetHeaders ¶
SetHeaders merge request origin header and header
func (*Request) SetProxyURL ¶
SetProxyURL set the proxy url for this request
func (*Request) SetProxyUrl ¶
SetProxyUrl set the proxy for this request eg. "http://127.0.0.1:8080" "http://username:password@127.0.0.1:8080"
func (*Request) SetQueryString ¶
SetQueryString set GET parameters to request
func (*Request) SetReferer ¶
SetReferer set request referer
func (*Request) SetTimeout ¶
SetTimeout set request timeout
func (*Request) SetUserAgent ¶
SetUserAgent set request user-agent
type Response ¶
type Response struct { RequestId uint64 // request id HttpRequest *http.Request Status string // e.g. "200 OK" StatusCode int // e.g. 200 Proto string // e.g. "HTTP/1.0" ProtoMajor int // e.g. 1 ProtoMinor int // e.g. 0 Header http.Header Body *bytes.Buffer ContentLength int64 ExecTime time.Duration // request exec time TLS *tls.ConnectionState TransferEncoding []string Encoding encoding.Encoding // Response body encoding // contains filtered or unexported fields }
func PostFormData ¶
func PostFormData(rawurl string, ops ...OptionFunc) (*Response, error)
PostFormData request
func (*Response) GetContextType ¶
func (*Response) GetHeaderSingle ¶
type Session ¶
type Session struct { BaseURL string Header http.Header Proxy *url.URL Timeout time.Duration // contains filtered or unexported fields }
Session is a http.Client
func DisableTrace ¶ added in v0.4.0
func DisableTrace() *Session
DisableTrace method disables the Quick client trace. Refer to `quick.EnableTrace`.
Since v0.4.0
func EnableTrace ¶ added in v0.4.0
func EnableTrace() *Session
EnableTrace method enables the Quick client trace for the requests fired from the client using `httptrace.ClientTrace` and provides insights.
resp, err := quick.EnableTrace().Get("https://httpbin.org/get") fmt.Println("Error:", err) fmt.Println("Trace Info:", resp.TraceInfo())
Also `Request.EnableTrace` available too to get trace info for single request.
Since v0.4.0
func InsecureSkipVerify ¶
InsecureSkipVerify ssl skip verify
func SetBaseURL ¶ added in v0.4.0
SetBaseURL method is to set Base URL in the client instance. It will be used with request raised from this client with relative URL
// Setting HTTP address quick.SetBaseURL("http://myjeeva.com") // Setting HTTPS address quick.SetBaseURL("https://myjeeva.com")
Since v0.4.0
func SetCheckRedirectHandler ¶
SetCheckRedirectHandler set global checkRedirect handler handler: func(req *http.Request, via []*http.Request) error
func SetCookieJar ¶
SetCookieJar set global cookieJar
func SetHeaderSingle ¶
SetHeaderSingle set global header single
func SetLogger ¶ added in v0.4.0
SetLogger method sets given writer for logging Quick request and response details.
Compliant to interface `quick.Logger`.
func SetProxyHandler ¶
SetProxyHandler set global proxy handler handler: func(req *http.Request) (*url.URL, error)
func SetTimeout ¶
SetTimeout set global request timeout example: time.Second * 30
func (*Session) Connect ¶
func (session *Session) Connect(rawurl string, ops ...OptionFunc) (*Response, error)
Connect request
func (*Session) Delete ¶
func (session *Session) Delete(rawurl string, ops ...OptionFunc) (*Response, error)
Delete request
func (*Session) DisableTrace ¶ added in v0.4.0
DisableTrace method disables the Quick client trace. Refer to `Session.EnableTrace`.
Since v0.4.0
func (*Session) EnableTrace ¶ added in v0.4.0
EnableTrace method enables the Quick client trace for the requests fired from the client using `httptrace.ClientTrace` and provides insights.
session := quick.NewSession().EnableTrace() resp, err := session.Get("https://httpbin.org/get") fmt.Println("Error:", err) fmt.Println("Trace Info:", resp.TraceInfo())
Also `Request.EnableTrace` available too to get trace info for single request.
Since v0.4.0
func (*Session) Get ¶
func (session *Session) Get(rawurl string, ops ...OptionFunc) (*Response, error)
Get request
func (*Session) GetHeaderSingle ¶
GetHeaderSingle get session global header single
func (*Session) GetProxyURL ¶
GetProxyURL get session global proxy url
func (*Session) GetProxyUrl ¶
GetProxyUrl get session global proxy url
func (*Session) GetUserAgent ¶
GetUserAgent get session global user-agent
func (*Session) Head ¶
func (session *Session) Head(rawurl string, ops ...OptionFunc) (*Response, error)
Head request
func (*Session) InsecureSkipVerify ¶
InsecureSkipVerify ssl skip verify
func (*Session) Options ¶
func (session *Session) Options(rawurl string, ops ...OptionFunc) (*Response, error)
Options request
func (*Session) Patch ¶
func (session *Session) Patch(rawurl string, ops ...OptionFunc) (*Response, error)
Patch request
func (*Session) Post ¶
func (session *Session) Post(rawurl string, ops ...OptionFunc) (*Response, error)
Post request
func (*Session) PostFormData ¶
func (session *Session) PostFormData(rawurl string, ops ...OptionFunc) (*Response, error)
PostFormData postForm request
func (*Session) Put ¶
func (session *Session) Put(rawurl string, ops ...OptionFunc) (*Response, error)
Put request
func (*Session) SetBaseURL ¶ added in v0.4.0
SetBaseURL method is to set Base URL in the client instance. It will be used with request raised from this client with relative URL
// Setting HTTP address session.SetBaseURL("http://myjeeva.com") // Setting HTTPS address session.SetBaseURL("https://myjeeva.com")
Since v0.4.0
func (*Session) SetCheckRedirectHandler ¶
func (session *Session) SetCheckRedirectHandler(handler func(req *http.Request, via []*http.Request) error) *Session
SetCheckRedirectHandler set session global checkRedirect handler. handler: func(req *http.Request, via []*http.Request) error
func (*Session) SetCookieJar ¶
SetCookieJar set session global cookieJar.
func (*Session) SetCookies ¶
SetCookies set cookies of the url in Session.
func (*Session) SetHeaderSingle ¶
SetHeaderSingle set session global header single
func (*Session) SetLogger ¶ added in v0.4.0
SetLogger method sets given writer for logging Quick request and response details.
Compliant to interface `quick.Logger`.
func (*Session) SetProxyHandler ¶
SetProxyHandler set session global proxy handler. handler: func(req *http.Request) (*url.URL, error)
func (*Session) SetProxyURL ¶
SetProxyURL set session global proxy url
func (*Session) SetProxyUrl ¶
SetProxyUrl set session global proxy url
func (*Session) SetTimeout ¶
SetTimeout set session global request timeout example: time.Second * 30
func (*Session) SetUserAgent ¶
SetUserAgent set session global user-agent
func (*Session) Suck ¶
func (session *Session) Suck(req *Request, ops ...OptionFunc) (*Response, error)
Suck request suck data
func (*Session) Use ¶
func (session *Session) Use(middleware ...HandlerFunc) *Session
Use use middleware handler.
type SessionOptions ¶
type SessionOptions struct { // DialTimeout is the maximum amount of time a dial will wait for // a connect to complete. // // When using TCP and dialing a host name with multiple IP // addresses, the timeout may be divided between them. // // With or without a timeout, the operating system may impose // its own earlier timeout. For instance, TCP timeouts are // often around 3 minutes. DialTimeout time.Duration // DialKeepAlive specifies the interval between keep-alive // probes for an active network connection. // // Network protocols or operating systems that do // not support keep-alives ignore this field. // If negative, keep-alive probes are disabled. DialKeepAlive time.Duration // MaxConnsPerHost optionally limits the total number of // connections per host, including connections in the dialing, // active, and idle states. On limit violation, dials will block. // // Zero means no limit. MaxConnsPerHost int // MaxIdleConns controls the maximum number of idle (keep-alive) // connections across all hosts. Zero means no limit. MaxIdleConns int // MaxIdleConnsPerHost, if non-zero, controls the maximum idle // (keep-alive) connections to keep per-host. If zero, // DefaultMaxIdleConnsPerHost is used. MaxIdleConnsPerHost int // IdleConnTimeout is the maximum amount of time an idle // (keep-alive) connection will remain idle before closing // itself. // Zero means no limit. IdleConnTimeout time.Duration // TLSHandshakeTimeout specifies the maximum amount of time waiting to // wait for a TLS handshake. Zero means no timeout. TLSHandshakeTimeout time.Duration // ExpectContinueTimeout, if non-zero, specifies the amount of // time to wait for a server's first response headers after fully // writing the request headers if the request has an // "Expect: 100-continue" header. Zero means no timeout and // causes the encode to be sent immediately, without // waiting for the server to approve. // This time does not include the time to send the request header. ExpectContinueTimeout time.Duration // DisableCookieJar specifies whether disable session cookiejar. DisableCookieJar bool // DisableDialKeepAlives, if true, disables HTTP keep-alives and // will only use the connection to the server for a single // HTTP request. // // This is unrelated to the similarly named TCP keep-alives. DisableDialKeepAlives bool }
func DefaultSessionOptions ¶
func DefaultSessionOptions() *SessionOptions
DefaultSessionOptions return a default SessionOptions object.
type TraceInfo ¶ added in v0.4.0
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 Quick // request execution flow, including retry count. RequestAttempt int // RemoteAddr returns the remote network address. RemoteAddr net.Addr }
TraceInfo struct is used provide request trace info such as DNS lookup duration, Connection obtain duration, Server processing duration, etc.
Since v0.4.0