client

package
v1.13.4 Latest Latest
Warning

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

Go to latest
Published: Jun 14, 2024 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

View Source
const (
	UserAgent1         = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0"
	UserAgentChrome95  = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36"
	UserAgentChrome117 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"
	UserAgentIphone    = "" /* 139-byte string literal not displayed */
)
View Source
const DownloadKey = fs.DownloadKey

Variables

View Source
var (
	DefaultClient   = newHttpClient()
	DefaultLogLevel = LogLevelError
)
View Source
var (
	ErrNotFound = fmt.Errorf("not found")
)

Functions

func DefaultLogger

func DefaultLogger(method, url, auth string, reqBody, respBody *Body, status int, process time.Duration, err error)

func Delete added in v1.5.11

func Delete(url string, param, response interface{}) error

func DisableLog

func DisableLog()

func DownloadFile

func DownloadFile(filepath, url string) error

func DownloadImage

func DownloadImage(filepath, url string) error

func Get added in v1.5.11

func Get(url string, response any) error

func GetFile

func GetFile(url string) (io.ReadCloser, error)

func GetFileWithReqOption

func GetFileWithReqOption(url string, opts ...RequestOption) (io.ReadCloser, error)

func GetImage

func GetImage(url string) (io.ReadCloser, error)

func GetRandUserAgent

func GetRandUserAgent() string

func GetStream added in v1.5.11

func GetStream(url string) (io.ReadCloser, error)

func ImageOption

func ImageOption(req *http.Request)

func NewReplaceHttpRequest

func NewReplaceHttpRequest(r *http.Request) *replaceHttpRequest

func Post added in v1.5.11

func Post(url string, param, response interface{}) error

func Put added in v1.5.11

func Put(url string, param, response interface{}) error

func QueryParam added in v1.12.7

func QueryParam(param any) string

func ReplaceHttpRequest

func ReplaceHttpRequest(r *http.Request, url, method string, body io.ReadCloser) *http.Request

func ResetProxy

func ResetProxy()

func ResolveURL

func ResolveURL(u *url.URL, p string) string

func SetAccessLog added in v1.5.11

func SetAccessLog(log AccessLog)

func SetHttpClient added in v1.5.11

func SetHttpClient(client *http.Client)

func SetProxy

func SetProxy(url string)

func SetProxyEnv

func SetProxyEnv(url string)

func SetTag added in v1.5.11

func SetTag(t string)

func SetTimeout

func SetTimeout(timeout time.Duration)

func UrlAppendQueryParam added in v1.12.7

func UrlAppendQueryParam(url string, param interface{}) string

func UserAgentChrome

func UserAgentChrome(version string) string

Types

type AccessLog added in v1.5.11

type AccessLog func(method, url, auth string, reqBody, respBody *Body, status int, process time.Duration, err error)

type Body

type Body struct {
	Data        []byte
	ContentType ContentType
}

func NewBody

func NewBody(data []byte, contentType ContentType) *Body

func (*Body) IsJson

func (b *Body) IsJson() bool

func (*Body) IsProtobuf

func (b *Body) IsProtobuf() bool

type ContentType

type ContentType uint8
const (
	ContentTypeJson ContentType = iota
	ContentTypeForm
	ContentTypeFormData
	ContentTypeGrpc
	ContentTypeGrpcWeb
	ContentTypeXml
	ContentTypeText
	ContentTypeBinary
	ContentTypeApplication
	ContentTypeImage
	ContentTypeAudio
	ContentTypeVideo
)

func (*ContentType) Decode added in v1.5.11

func (c *ContentType) Decode(contentType string)

func (ContentType) String added in v1.5.11

func (c ContentType) String() string

type DownloadMode added in v1.5.11

type DownloadMode uint8
const (
	DModeForceOverwrite DownloadMode = iota
	DModeNotExistDownload
	DModeContinueDownload
	DModeMultipartDownload // TODO
)

type Downloader

type Downloader struct {
	Client          *http.Client
	Request         *http.Request
	Mode            DownloadMode // 模式,0-强制覆盖,1-不存在下载,2-断续下载
	ResponseHandler func(response []byte) ([]byte, error)
}

TODO: Range Status(206) PartialContent 下载

func NewDownloader

func NewDownloader(url string) (*Downloader, error)

func (*Downloader) AddHeader

func (d *Downloader) AddHeader(header, value string) *Downloader

func (*Downloader) ConcurrencyDownloadFile

func (d *Downloader) ConcurrencyDownloadFile(filepath string, concurrencyNum int) error

TODO: 利用简单任务调度实现

func (*Downloader) ContinuationDownloadFile

func (d *Downloader) ContinuationDownloadFile(filepath string) error

func (*Downloader) DownloadFile

func (d *Downloader) DownloadFile(filepath string) error

func (*Downloader) ExistsSkipMode added in v1.7.0

func (d *Downloader) ExistsSkipMode() *Downloader

如果文件已存在,不下载覆盖

func (*Downloader) GetResponse

func (d *Downloader) GetResponse() (*http.Response, error)

func (*Downloader) SetClient

func (d *Downloader) SetClient(set func(*http.Client)) *Downloader

func (*Downloader) SetHeader

func (d *Downloader) SetHeader(header Header) *Downloader

func (*Downloader) SetRequest

func (d *Downloader) SetRequest(set RequestOption) *Downloader

func (*Downloader) WithClient

func (d *Downloader) WithClient(c *http.Client) *Downloader

func (*Downloader) WithMode

func (d *Downloader) WithMode(mode DownloadMode) *Downloader

func (*Downloader) WithOptions

func (d *Downloader) WithOptions(opts ...RequestOption) *Downloader

func (*Downloader) WithRange

func (d *Downloader) WithRange(begin, end string) *Downloader

func (*Downloader) WithRequest

func (d *Downloader) WithRequest(c *http.Request) *Downloader

func (*Downloader) WithResponseHandler

func (d *Downloader) WithResponseHandler(responseHandler func(response []byte) ([]byte, error)) *Downloader

type FromResponse added in v1.5.11

type FromResponse interface {
	FromResponse(response *http.Response)
}
type Header []string

func DefaultHeader

func DefaultHeader() Header

func NewHeader

func NewHeader() *Header

func (*Header) Add

func (h *Header) Add(k, v string) *Header

func (Header) Clone

func (h Header) Clone() Header

func (*Header) Set

func (h *Header) Set(k, v string) *Header

type LogLevel

type LogLevel int8
const (
	LogLevelSilent LogLevel = iota
	LogLevelError
	LogLevelInfo
)

type Logger

type Logger interface {
	SetPrefix(string)
	Printf(format string, v ...interface{})
	Println(v ...interface{})
}

type MarshalBody added in v1.5.11

type MarshalBody interface {
	MarshalBody(contentType string) ([]byte, error)
}

type MarshalHeader added in v1.5.11

type MarshalHeader interface {
	MarshalHeader() ([]string, error)
}

type MarshalQuery added in v1.5.11

type MarshalQuery interface {
	MarshalQuery() (string, error)
}

type Option

type Option func(req *Request) *Request

type RawBytes

type RawBytes = []byte

type Request

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

Request ...

func DefaultHeaderRequest

func DefaultHeaderRequest() *Request

func New

func New() *Request

func NewDelete added in v1.12.11

func NewDelete(url string) *Request

func NewGet added in v1.12.11

func NewGet(url string) *Request

func NewPost added in v1.12.11

func NewPost(url string) *Request

func NewPut added in v1.12.11

func NewPut(url string) *Request

func NewRequest

func NewRequest(method, url string) *Request

func (*Request) AddHeader

func (req *Request) AddHeader(k, v string) *Request

func (*Request) BasicAuth added in v1.2.12

func (req *Request) BasicAuth(authUser, authPass string)

func (*Request) Client added in v1.2.12

func (req *Request) Client(client *http.Client) *Request

func (*Request) ContentType

func (req *Request) ContentType(contentType ContentType) *Request

func (*Request) Context added in v1.2.12

func (req *Request) Context(ctx context.Context) *Request

func (*Request) Delete

func (req *Request) Delete(url string, param, response interface{}) error

func (*Request) DisableLog

func (req *Request) DisableLog() *Request

func (*Request) Do

func (req *Request) Do(param, response interface{}) error

Do create a HTTP request param: 请求参数 目前只支持编码为json 或 url-encoded

func (*Request) DoEmpty

func (req *Request) DoEmpty() error

func (*Request) DoNoParam added in v1.5.11

func (req *Request) DoNoParam(response interface{}) error

func (*Request) DoNoResponse added in v1.5.11

func (req *Request) DoNoResponse(param interface{}) error

func (*Request) DoRaw

func (req *Request) DoRaw(param interface{}) (RawBytes, error)

func (*Request) DoStream

func (req *Request) DoStream(param interface{}) (io.ReadCloser, error)

func (*Request) Get

func (req *Request) Get(url string, response interface{}) error

func (*Request) Header added in v1.2.12

func (req *Request) Header(header Header) *Request

func (*Request) LogLevel

func (req *Request) LogLevel(lvl LogLevel) *Request

func (*Request) Logger added in v1.2.12

func (req *Request) Logger(logger AccessLog) *Request

func (*Request) Method

func (req *Request) Method(method string) *Request

func (*Request) Post

func (req *Request) Post(url string, param, response interface{}) error

func (*Request) Proxy added in v1.2.12

func (req *Request) Proxy(url string) *Request

func (*Request) Put

func (req *Request) Put(url string, param, response interface{}) error

func (*Request) ResponseHandler

func (req *Request) ResponseHandler(handler func(response *http.Response) (retry bool, data []byte, err error)) *Request

handler 返回值:是否重试,返回数据,错误

func (*Request) RetryHandler

func (req *Request) RetryHandler(handle func(*Request)) *Request

func (*Request) RetryTimes

func (req *Request) RetryTimes(retryTimes int) *Request

func (*Request) RetryTimesWithInterval

func (req *Request) RetryTimesWithInterval(retryTimes int, retryInterval time.Duration) *Request

func (*Request) Tag added in v1.2.12

func (req *Request) Tag(tag string) *Request

func (*Request) Timeout

func (req *Request) Timeout(timeout time.Duration) *Request

设置过期时间,仅对单次请求有效

func (*Request) Url

func (req *Request) Url(url string) *Request

type RequestOption

type RequestOption func(req *http.Request)

func SetAccept

func SetAccept(refer string) RequestOption

func SetCookie

func SetCookie(cookie string) RequestOption

func SetHeader

func SetHeader(header Header) RequestOption

func SetRefer

func SetRefer(refer string) RequestOption

type ResponseBody

type ResponseBody httpi.ResAnyData

func (*ResponseBody) CheckError

func (res *ResponseBody) CheckError() error

type ResponseBody2

type ResponseBody2 struct {
	Code int    `json:"code"`
	Data any    `json:"data"`
	Msg  string `json:"msg"`
}

func (*ResponseBody2) CheckError

func (res *ResponseBody2) CheckError() error

type ResponseBody3 added in v1.5.11

type ResponseBody3 struct {
	Status  int    `json:"status"`
	Data    any    `json:"data"`
	Message string `json:"message"`
}

func (*ResponseBody3) CheckError added in v1.5.11

func (res *ResponseBody3) CheckError() error

type ResponseBodyCheck

type ResponseBodyCheck interface {
	CheckError() error
}

func CommonResponse

func CommonResponse(response interface{}) ResponseBodyCheck

func CommonResponse2

func CommonResponse2(response interface{}) ResponseBodyCheck

func CommonResponse3 added in v1.5.11

func CommonResponse3(response interface{}) ResponseBodyCheck

type SetRequest added in v1.5.11

type SetRequest interface {
	SetRequest(*http.Request)
}

type UnmarshalBody added in v1.5.11

type UnmarshalBody interface {
	UnmarshalBody(contentType string, body []byte) error
}

type UnmarshalHeader added in v1.5.11

type UnmarshalHeader interface {
	UnmarshalHeader(headers []string) error
}

type UnmarshalQuery added in v1.5.11

type UnmarshalQuery interface {
	UnmarshalQuery(query string) error
}

type UploadMode added in v1.5.11

type UploadMode uint8

TODO

const (
	UModeNormal UploadMode = iota
	UModeChunk
	UModeStream
)

type Uploader added in v1.5.11

type Uploader struct {
	Client  *http.Client
	Request *http.Request
	Mode    UploadMode // 模式,0-强制覆盖,1-不存在下载,2-断续下载
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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