client

package
v0.0.19 Latest Latest
Warning

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

Go to latest
Published: Jul 25, 2024 License: MIT Imports: 23 Imported by: 1

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
View Source
const RangeFormat = "bytes=%d-%d/%d"
View Source
const RangeFormat2 = "bytes=%d-%d/*"

Variables

View Source
var (
	DefaultHttpClient = newHttpClient()
	DefaultLogLevel   = LogLevelError
)
View Source
var (
	ErrNotFound            = fmt.Errorf("not found")
	ErrRangeNotSatisfiable = fmt.Errorf("range not satisfiable")
)
View Source
var DefaultClient = New()
View Source
var DefaultDownloadHttpClient = newDownloadHttpClient()
View Source
var DefaultDownloader = NewDownloader()

Functions

func CloseReaderWarp

func CloseReaderWarp(err error) error

func DefaultHeader

func DefaultHeader() http.Header

func DefaultLogger

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

func Delete

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

func DisableLog

func DisableLog()

func Download

func Download(filepath, url string) error

func DownloadImage

func DownloadImage(filepath, url string) error

func DownloadToDir

func DownloadToDir(dir, url string) error

func Get

func Get(url string, param, response any) error

func GetImage

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

func GetRandUserAgent

func GetRandUserAgent() string

func GetReader

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

func GetReaderWithReqOption

func GetReaderWithReqOption(url string, opts ...HttpRequestOption) (io.ReadCloser, error)

func GetStream

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

func GetStreamX

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

func GetX

func GetX(url string, response any) error

func ImageOption

func ImageOption(req *http.Request)

func NewReplaceHttpRequest

func NewReplaceHttpRequest(r *http.Request) *replaceHttpRequest

func Post

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

func Put

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

func ReplaceHttpRequest

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

func ResetProxy

func ResetProxy()

func SetAccessLog

func SetAccessLog(log AccessLog)

func SetHttpClient

func SetHttpClient(client *http.Client)

func SetProxy

func SetProxy(url string)

func SetProxyEnv

func SetProxyEnv(url string)

func SetTag

func SetTag(t string)

func SetTimeout

func SetTimeout(timeout time.Duration)

func UserAgentChrome

func UserAgentChrome(version string) string

Types

type AccessLog

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 Client

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

Client ...

func DefaultHeaderClient

func DefaultHeaderClient() *Client

func New

func New() *Client

func (*Client) AddHeader

func (c *Client) AddHeader(k, v string) *Client

func (*Client) BasicAuth

func (c *Client) BasicAuth(authUser, authPass string) *Client

func (*Client) Clone

func (c *Client) Clone() *Client

func (*Client) Delete

func (c *Client) Delete(url string, param, response any) error

func (*Client) DeleteRequest

func (c *Client) DeleteRequest(url string) *Request

func (*Client) DisableLog

func (c *Client) DisableLog() *Client

func (*Client) Do

func (c *Client) Do(r *Request, param, response any) error

func (*Client) Get

func (c *Client) Get(url string, param, response any) error

func (*Client) GetRequest

func (c *Client) GetRequest(url string) *Request

func (*Client) GetStream

func (c *Client) GetStream(url string, param any) (io.ReadCloser, error)

func (*Client) GetStreamX

func (c *Client) GetStreamX(url string) (io.ReadCloser, error)

func (*Client) GetX

func (c *Client) GetX(url string, response any) error

func (*Client) Header

func (c *Client) Header(header http.Header) *Client

func (*Client) HttpClient

func (c *Client) HttpClient(client *http.Client) *Client

func (*Client) LogLevel

func (c *Client) LogLevel(lvl LogLevel) *Client

func (*Client) Logger

func (c *Client) Logger(logger AccessLog) *Client

func (*Client) ParseTag

func (c *Client) ParseTag(tag string) *Client

func (*Client) Post

func (c *Client) Post(url string, param, response any) error

func (*Client) PostRequest

func (c *Client) PostRequest(url string) *Request

func (*Client) Proxy

func (c *Client) Proxy(proxyUrl string) *Client

func (*Client) Put

func (c *Client) Put(url string, param, response any) error

func (*Client) PutRequest

func (c *Client) PutRequest(url string) *Request

func (*Client) Request

func (c *Client) Request(method, url string) *Request

func (*Client) RequestDo

func (c *Client) RequestDo(param, response any) error

func (*Client) ResDataHandler

func (c *Client) ResDataHandler(handler func(response []byte) ([]byte, error)) *Client

func (*Client) ResponseHandler

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

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

func (*Client) RetryHandler

func (c *Client) RetryHandler(handle func(r *http.Request)) *Client

func (*Client) RetryTimes

func (c *Client) RetryTimes(retryTimes int) *Client

func (*Client) RetryTimesWithInterval

func (c *Client) RetryTimesWithInterval(retryTimes int, retryInterval time.Duration) *Client

func (*Client) SetHttpClient

func (c *Client) SetHttpClient(opt HttpClientOption) *Client

func (*Client) Timeout

func (c *Client) Timeout(timeout time.Duration) *Client

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

type ContentType

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

func (*ContentType) Decode

func (c *ContentType) Decode(contentType string)

func (ContentType) String

func (c ContentType) String() string

type DownloadMode

type DownloadMode uint16
const (
	DModeOverwrite DownloadMode = 1 << iota
	DModeContinue
	DModeMultipart   // TODO 分块下载后合并
	DModeMultiThread // TODO 暂时没找到并发写文件的方法,可以并发下载,顺序写入
)

type DownloadReq

type DownloadReq struct {
	Url string
	// contains filtered or unexported fields
}

func NewDownloadReq

func NewDownloadReq(url string) *DownloadReq

func (*DownloadReq) AddHeader

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

func (*DownloadReq) ConcurrencyDownload

func (c *DownloadReq) ConcurrencyDownload(filepath string, url string, concurrencyNum int) error

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

func (*DownloadReq) ContinuationDownload

func (c *DownloadReq) ContinuationDownload(filepath string) error

func (*DownloadReq) Download

func (c *DownloadReq) Download(filepath string) error

func (*DownloadReq) Downloader

func (req *DownloadReq) Downloader() *Downloader

func (*DownloadReq) GetMode

func (c *DownloadReq) GetMode() DownloadMode

func (*DownloadReq) GetReader

func (c *DownloadReq) GetReader() (io.ReadCloser, error)

func (*DownloadReq) GetResponse

func (c *DownloadReq) GetResponse() (*http.Response, error)

func (*DownloadReq) Mode

func (c *DownloadReq) Mode(mode DownloadMode) *DownloadReq

func (*DownloadReq) OverwriteMode

func (c *DownloadReq) OverwriteMode() *DownloadReq

如果文件已存在,强制覆盖

func (*DownloadReq) SetDownloader

func (req *DownloadReq) SetDownloader(set func(c *Downloader)) *DownloadReq

func (*DownloadReq) WithDownloader

func (req *DownloadReq) WithDownloader(c *Downloader) *DownloadReq

type Downloader

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

TODO: Range Status(206) PartialContent 下载

func NewDownloader

func NewDownloader() *Downloader

func (*Downloader) AddHeader

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

func (*Downloader) BasicAuth

func (c *Downloader) BasicAuth(authUser, authPass string) *Downloader

func (*Downloader) Clone

func (c *Downloader) Clone() *Downloader

func (*Downloader) Download

func (c *Downloader) Download(filepath string, r *DownloadReq) error

func (*Downloader) DownloadReq

func (c *Downloader) DownloadReq(url string) *DownloadReq

func (*Downloader) GetReader

func (c *Downloader) GetReader(r *DownloadReq) (io.ReadCloser, error)

func (*Downloader) GetResponse

func (c *Downloader) GetResponse(r *DownloadReq) (*http.Response, error)

func (*Downloader) Header

func (c *Downloader) Header(header http.Header) *Downloader

func (*Downloader) HttpClient

func (c *Downloader) HttpClient(client *http.Client) *Downloader

func (*Downloader) Options

func (c *Downloader) Options(opts ...HttpRequestOption) *Downloader

func (*Downloader) Proxy

func (c *Downloader) Proxy(proxyUrl string) *Downloader

func (*Downloader) ReqDownload

func (c *Downloader) ReqDownload(filepath string) error

func (*Downloader) ResDataHandler

func (c *Downloader) ResDataHandler(handler func(response []byte) ([]byte, error)) *Downloader

func (*Downloader) ResponseHandler

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

func (*Downloader) SetHttpClient

func (c *Downloader) SetHttpClient(opt HttpClientOption) *Downloader

func (*Downloader) Timeout

func (c *Downloader) Timeout(timeout time.Duration) *Downloader

type FromResponse

type FromResponse interface {
	FromResponse(response *http.Response)
}

type HttpClientOption

type HttpClientOption func(client *http.Client)

type HttpRequestOption

type HttpRequestOption func(req *http.Request)

func AddHeader

func AddHeader(k, v string) HttpRequestOption

func SetAccept

func SetAccept(refer string) HttpRequestOption

func SetCookie

func SetCookie(cookie string) HttpRequestOption

func SetRefer

func SetRefer(refer string) HttpRequestOption

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

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

type MarshalHeader

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

type MarshalQuery

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

type Option

type Option func(req *Client) *Client

type RawBytes

type RawBytes = []byte

type Request

type Request struct {
	Method, Url string
	// contains filtered or unexported fields
}

func DefaultHeaderRequest

func DefaultHeaderRequest() *Request

func DeleteRequest

func DeleteRequest(url string) *Request

func GetRequest

func GetRequest(url string) *Request

func NewRequest

func NewRequest(method, url string) *Request

func PostRequest

func PostRequest(url string) *Request

func PutRequest

func PutRequest(url string) *Request

func (*Request) AddHeader

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

func (*Request) Client

func (req *Request) Client() *Client

func (*Request) ContentType

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

func (*Request) Context

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

func (*Request) Do

func (req *Request) Do(param, response any) error

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

func (*Request) DoEmpty

func (req *Request) DoEmpty() error

func (*Request) DoNoParam

func (req *Request) DoNoParam(response any) error

func (*Request) DoNoResponse

func (req *Request) DoNoResponse(param any) error

func (*Request) DoRaw

func (req *Request) DoRaw(param any) (RawBytes, error)

func (*Request) DoStream

func (req *Request) DoStream(param any) (io.ReadCloser, error)

func (*Request) SetClient

func (req *Request) SetClient(set func(c *Client)) *Request

func (*Request) WithClient

func (req *Request) WithClient(c *Client) *Request

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

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

func (*ResponseBody3) CheckError

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

func CommonResponse3(response interface{}) ResponseBodyCheck

type ResponseHandler

type ResponseHandler func(client *http.Response)

type SetRequest

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

type UnmarshalBody

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

type UnmarshalHeader

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

type UnmarshalQuery

type UnmarshalQuery interface {
	UnmarshalQuery(query string) error
}

type UploadMode

type UploadMode uint8

TODO

const (
	UModeNormal UploadMode = iota
	UModeChunk
	UModeStream
)

type Uploader

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