Documentation ¶
Index ¶
- Variables
- func CloneHeader(h http.Header) http.Header
- func CloneRequestBuilders(b []func(*http.Request) error) []func(*http.Request) error
- func CompareAPIErrCode(err error, code interface{}) bool
- func CompareResponseErrStatusCode(err error, statuscode int) bool
- func Exec(f *Fetcher, b ...Command) error
- func GetAPIErrCode(err error) string
- func GetAPIErrContent(err error) string
- func IsResponseErr(err error) bool
- func MergeHeader(dst http.Header, src http.Header)
- func URLToProxy(index string) func(*http.Request) (*url.URL, error)
- type APICodeErr
- type Client
- type Command
- func BasicAuth(username string, password string) Command
- func Body(body io.Reader) Command
- func Header(h http.Header) Command
- func HeaderBuilder(p HeaderBuilderProvier) Command
- func JSONBody(v interface{}) Command
- func MethodBuilder(p MethodBuilderProvider) Command
- func Params(params url.Values) Command
- func ParamsBuilder(p ParamsBuilderProvier) Command
- func ParsedURL(u *url.URL) Command
- func Replace(placeholder string, value string) Command
- func RequestBuilder(p RequestBuilderProvider) Command
- func SetDoer(d Doer) Command
- func SetHeader(key string, value string) Command
- func SetQuery(name string, value string) Command
- func URL(u string) Command
- type CommandFunc
- type Doer
- type DoerFactory
- type Fetcher
- type HeaderBuilderFunc
- type HeaderBuilderProvier
- type Host
- type Method
- type MethodBuilderFunc
- type MethodBuilderProvider
- type MultiPartWriter
- type ParamsBuilderFunc
- type ParamsBuilderProvier
- type Parser
- type ParserFunc
- type PathJoin
- type PathPrefix
- type PathSuffix
- type Preset
- func (p *Preset) Append(presets ...*Preset) *Preset
- func (p *Preset) CloneWith(cmds ...Command) *Preset
- func (p *Preset) Commands() []Command
- func (p *Preset) Concat(cmds ...Command) *Preset
- func (p *Preset) EndPoint(method string, suffix string) *Preset
- func (p *Preset) Exec(f *Fetcher) error
- func (p *Preset) Fetch(cmds ...Command) (*Response, error)
- func (p *Preset) FetchAndParse(preset Parser) (*Response, error)
- func (p *Preset) FetchWithBody(body io.Reader) (*Response, error)
- func (p *Preset) FetchWithBodyAndParse(body io.Reader, preset Parser) (*Response, error)
- func (p *Preset) FetchWithJSONBodyAndParse(body interface{}, preset Parser) (*Response, error)
- func (p *Preset) With(cmds ...Command) *Preset
- type PresetFactory
- type RequestBuilderFunc
- type RequestBuilderProvider
- type Response
- func ConvertResponse(resp *http.Response) *Response
- func Do(f *Fetcher, b ...Command) (*Response, error)
- func DoAndParse(doer Doer, preset *Preset, parser Parser) (*Response, error)
- func DoWithBodyAndParse(doer Doer, preset *Preset, body io.Reader, parser Parser) (*Response, error)
- func DoWithJSONBodyAndParse(doer Doer, preset *Preset, body interface{}, parser Parser) (*Response, error)
- func Fetch(cmds ...Command) (*Response, error)
- func FetchAndParse(preset *Preset, parser Parser) (*Response, error)
- func FetchWithBodyAndParse(preset *Preset, body io.Reader, parser Parser) (*Response, error)
- func FetchWithJSONBodyAndParse(preset *Preset, body interface{}, parser Parser) (*Response, error)
- func NewResponse() *Response
- type Server
- type ServerInfo
Constants ¶
This section is empty.
Variables ¶
var ( //Post http POST method Command. Post = Method("POST") //Get http GET method Command. Get = Method("GET") //Put http PUT method Command. Put = Method("PUT") //Delete http DELETE method Command. Delete = Method("DELETE") )
var DefaultDoer = func() Doer { return http.DefaultClient }
DefaultDoer default doer used to do http request if not setted.
var DefaultIdleConnTimeout = 120 * time.Second
DefaultIdleConnTimeout default client idle conn timeout.
var DefaultMaxIdleConns = 20
DefaultMaxIdleConns default client max idle conns
var DefaultTLSHandshakeTimeout = 30 * time.Second
DefaultTLSHandshakeTimeout default client tls handshake time out.
var DefaultTimeout = 120 * time.Second
DefaultTimeout default client timeout
var ErrMsgLengthLimit = 512
ErrMsgLengthLimit max error message length
Functions ¶
func CloneRequestBuilders ¶
CloneRequestBuilders clone request builders
func CompareAPIErrCode ¶
CompareAPIErrCode check if error is an ApiCodeErr with given api err code.
func CompareResponseErrStatusCode ¶
CompareResponseErrStatusCode check if error is a ResponseErr with given status code.
func GetAPIErrCode ¶
GetAPIErrCode get api error code form error. Return empty string if err is not an ApiCodeErr
func GetAPIErrContent ¶
GetAPIErrContent get api error code form error. Return empty string if err is not an ApiCodeErr
func MergeHeader ¶
MergeHeader merge src header to dst
Types ¶
type APICodeErr ¶
type APICodeErr struct { //URI api uri. URI string //Code api error code. Code string //Method request method Method string //Content api response. Content []byte }
APICodeErr api code error struct.
func NewAPICodeErr ¶
func NewAPICodeErr(url string, method string, code interface{}, content []byte) *APICodeErr
NewAPICodeErr create a new api code error with given url,method,code,and content.
func (*APICodeErr) Error ¶
func (r *APICodeErr) Error() string
Error used as a error which return request url,request status,erro code,request content. Error max length is ErrMsgLengthLimit.
func (*APICodeErr) ErrorPrivateRef ¶
func (r *APICodeErr) ErrorPrivateRef() string
ErrorPrivateRef error private ref
type Client ¶
type Client struct { //TimeoutInSecond timeout in secound //Default value is 120. TimeoutInSecond int64 //MaxIdleConns max idel conns. //Default value is 20 MaxIdleConns int //IdleConnTimeoutInSecond idel conn timeout in second. //Default value is 120 IdleConnTimeoutInSecond int64 //TLSHandshakeTimeoutInSecond tls handshake timeout in secound. //default value is 30. TLSHandshakeTimeoutInSecond int64 //Proxy proxy url. //If set to empty string,clients will not use proxy. //Default value is empty string. Proxy string // contains filtered or unexported fields }
Client http client config struct Value should not changed after first "DO" call.
func (*Client) CreateDoer ¶
CreateDoer create doer. Return doer createrd and any error if raised.
func (*Client) Do ¶
Do create request ,client with given f.etcher and commands and fetch Return http response and any error if raised.
type Command ¶
type Command interface { //Exec exec command to modify fetcher. //Return any error if raised. Exec(*Fetcher) error }
Command fetch command interface which used to modify fetch
func HeaderBuilder ¶
func HeaderBuilder(p HeaderBuilderProvier) Command
HeaderBuilder command which modify fetcher header by given header builder provider.
func JSONBody ¶
func JSONBody(v interface{}) Command
JSONBody command which modify fetcher body to given value as json. Fetcher body will set to nil if v is nil.
func MethodBuilder ¶
func MethodBuilder(p MethodBuilderProvider) Command
MethodBuilder command which modify fetcher method by given method builder provider.
func ParamsBuilder ¶
func ParamsBuilder(p ParamsBuilderProvier) Command
ParamsBuilder command which modify fetcher header by given params builder provider.
func RequestBuilder ¶
func RequestBuilder(p RequestBuilderProvider) Command
RequestBuilder command which append given request builder to fetcher.
type CommandFunc ¶
CommandFunc command func
func (CommandFunc) Exec ¶
func (f CommandFunc) Exec(e *Fetcher) error
Exec exec command to modify fetcher. Return any error if raised.
type DoerFactory ¶
type DoerFactory interface { //CreateDoer create doer. //Return doer createrd and any error if raised. CreateDoer() (*Doer, error) }
DoerFactory doer factory
type Fetcher ¶
type Fetcher struct { //URL http url used to create http request URL *url.URL //Header http header used to create http request Header http.Header //Method http method used to create http request Method string //Body request body Body io.Reader //Builders request builder which should called in order after http request created. Builders []func(*http.Request) error //Doer http client by which will do request Doer Doer }
Fetcher http request fetcher struct. New fetcher should be created when new http request buildding. You should not edit Fetcher value directly,use Command and Preset instead.
func (*Fetcher) AppendBuilder ¶
AppendBuilder append request builders to fetcher. Fetcher builders will be cloned.
type HeaderBuilderFunc ¶
HeaderBuilderFunc header builde func
func (HeaderBuilderFunc) Exec ¶
func (b HeaderBuilderFunc) Exec(f *Fetcher) error
Exec exec command to modify fetcher. Return any error if raised.
type HeaderBuilderProvier ¶
HeaderBuilderProvier header builde provider
type MethodBuilderFunc ¶
MethodBuilderFunc method builder func
func (MethodBuilderFunc) Exec ¶
func (b MethodBuilderFunc) Exec(f *Fetcher) error
Exec exec command to modify fetcher. Return any error if raised.
type MethodBuilderProvider ¶
MethodBuilderProvider method builder provider
type MultiPartWriter ¶
MultiPartWriter multipart writer command
func NewMultiPartWriter ¶
func NewMultiPartWriter() *MultiPartWriter
NewMultiPartWriter create new MultiPartWriter command to upload file. You should close writer before exec it.
func (*MultiPartWriter) Exec ¶
func (w *MultiPartWriter) Exec(f *Fetcher) error
Exec exec command to modify fetcher. Return any error if raised.
type ParamsBuilderFunc ¶
ParamsBuilderFunc param builde func type
func (ParamsBuilderFunc) Exec ¶
func (b ParamsBuilderFunc) Exec(f *Fetcher) error
Exec exec command to modify fetcher. Return any error if raised.
type ParamsBuilderProvier ¶
ParamsBuilderProvier params builde provider
type Parser ¶
type Parser interface { //Parse parse response data. //Return Response and any error if raised. Parse(*Response) error }
Parser response parser interface
func AsJSON ¶
func AsJSON(v interface{}) Parser
AsJSON create parser which parse givn value from response a JSON format.
func Download ¶
Download create parser which parse givn byte slice from response. You SHOULD NOT use BodyContent if you parsed response with Download Parser. This parser is designed to download file.
func Should200 ¶
Should200 parser that check if status code == 200. Give parser will parse responese if success or respnse will be returned as error.
func ShouldNoError ¶
ShouldNoError parser that check if status code < 500. Give parser will parse responese if success or respnse will be returned as error.
func ShouldSuccess ¶
ShouldSuccess parser that check if status code < 300. Give parser will parse responese if success or respnse will be returned as error.
type ParserFunc ¶
ParserFunc parser func type
func (ParserFunc) Parse ¶
func (p ParserFunc) Parse(resp *Response) error
Parse parse response data. Return Response and any error if raised.
type PathPrefix ¶
type PathPrefix string
PathPrefix command which modify fetcher url with given path prefix
func (PathPrefix) Exec ¶
func (p PathPrefix) Exec(f *Fetcher) error
Exec exec command to modify fetcher. Return any error if raised.
type PathSuffix ¶
type PathSuffix string
PathSuffix command which modify fetcher url with given path suffix
func (PathSuffix) Exec ¶
func (p PathSuffix) Exec(f *Fetcher) error
Exec exec command to modify fetcher. Return any error if raised.
type Preset ¶
type Preset struct {
// contains filtered or unexported fields
}
Preset fetch preset.
func BuildPreset ¶
BuildPreset build new preset with given commands
func MustPreset ¶
func MustPreset(f PresetFactory) *Preset
MustPreset create preset by given preset factory. Return preset created. Panic if any error raised.
func (*Preset) Fetch ¶
Fetch fetch request. Preset and commands will exec on new fetcher by which fetching response. Return http response and any error if raised.
func (*Preset) FetchAndParse ¶
FetchAndParse fetch request and prase response with given parser if no error raised. Return response fetched and any error raised when fetching or parsing.
func (*Preset) FetchWithBody ¶
FetchWithBody fetch request with given body. Return http response and any error if raised.
func (*Preset) FetchWithBodyAndParse ¶
FetchWithBodyAndParse fetch request and prase response with given preset ,body and parser if no error raised. Return response fetched and any error raised when fetching or parsing.
func (*Preset) FetchWithJSONBodyAndParse ¶
FetchWithJSONBodyAndParse fetch request and prase response with given preset ,body as json and parser if no error raised. Return response fetched and any error raised when fetching or parsing.
type PresetFactory ¶
type PresetFactory interface { //CreatePreset create new preset. //Return preset created and any error raised. CreatePreset() (*Preset, error) }
PresetFactory preset factory.
type RequestBuilderFunc ¶
RequestBuilderFunc request builder func type
func (RequestBuilderFunc) Exec ¶
func (b RequestBuilderFunc) Exec(f *Fetcher) error
Exec exec command to modify fetcher. Return any error if raised.
type RequestBuilderProvider ¶
RequestBuilderProvider request builder provider interface.
type Response ¶
Response fetch response struct
func ConvertResponse ¶
ConvertResponse convert http response to fetch response
func Do ¶
Do create request ,client with given f.etcher and commands and fetch Return http response and any error if raised.
func DoAndParse ¶
DoAndParse do request and prase response with given doer,preset and parser if no error raised. Return response fetched and any error raised when fetching or parsing.
func DoWithBodyAndParse ¶
func DoWithBodyAndParse(doer Doer, preset *Preset, body io.Reader, parser Parser) (*Response, error)
DoWithBodyAndParse do request and prase response with given doer,preset,body and parser if no error raised. Return response fetched and any error raised when fetching or parsing.
func DoWithJSONBodyAndParse ¶
func DoWithJSONBodyAndParse(doer Doer, preset *Preset, body interface{}, parser Parser) (*Response, error)
DoWithJSONBodyAndParse do request and prase response with given doer,preset,body as json and parser if no error raised. Return response fetched and any error raised when fetching or parsing.
func Fetch ¶
Fetch create new fetcher ,exec commands and fetch response. Return http response and any error if raised.
func FetchAndParse ¶
FetchAndParse fetch request and prase response with given preset and parser if no error raised. Return response fetched and any error raised when fetching or parsing.
func FetchWithBodyAndParse ¶
FetchWithBodyAndParse fetch request and prase response with given preset ,body and parser if no error raised. Return response fetched and any error raised when fetching or parsing.
func FetchWithJSONBodyAndParse ¶
FetchWithJSONBodyAndParse fetch request and prase response with given preset , body as json and parser if no error raised. Return response fetched and any error raised when fetching or parsing.
func (*Response) BodyContent ¶
BodyContent read and return body content from response. Response body will be closed after first read.
func (*Response) NewAPICodeErr ¶
NewAPICodeErr make a api code error which contains a error code.
type Server ¶
type Server struct { ServerInfo Client Client }
Server http server config struct
func (*Server) CreatePreset ¶
CreatePreset create new preset. Return preset created and any error raised.
type ServerInfo ¶
type ServerInfo struct { //URL server host url URL string //Header http header Header http.Header //Method http method Method string }
ServerInfo server info struct
func (*ServerInfo) CreatePreset ¶
func (s *ServerInfo) CreatePreset() (*Preset, error)
CreatePreset create new preset. Return preset created and any error raised.
func (*ServerInfo) IsEmpty ¶
func (s *ServerInfo) IsEmpty() bool
IsEmpty check if server info is empty IsEmpty will return true if equal nil or s.URL is empty string
func (*ServerInfo) MergeURL ¶
func (s *ServerInfo) MergeURL(url string) *ServerInfo
MergeURL clone and merge with given url
func (*ServerInfo) MustJoin ¶
func (s *ServerInfo) MustJoin(urlpath string) *ServerInfo
MustJoin clone and join with given urlpath