client

package
v1.3.2 Latest Latest
Warning

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

Go to latest
Published: Nov 3, 2025 License: MIT, Apache-2.0 Imports: 31 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
View Source
const RangeFormat = "bytes=%d-%d/%d"
View Source
const RangeFormat2 = "bytes=%d-%d/*"

Variables

View Source
var (
	DefaultHttpClient = newHttpClient(ClientTypeApi)
	DefaultLogLevel   = LogLevelError
)
View Source
var (
	ErrNotFound            = fmt.Errorf("not found")
	ErrRangeNotSatisfiable = fmt.Errorf("range not satisfiable")
)
View Source
var (
	ContentTypeKey = http.CanonicalHeaderKey("Content-Type")
)
View Source
var (
	DefaultClient = New().DisableLog()
)
View Source
var DefaultDownloadHttpClient = newDownloadHttpClient()
View Source
var DefaultDownloader = NewDownloader()
View Source
var DefaultUploader = NewUploader()

Functions

func CloseReaderWrap

func CloseReaderWrap(err error) error

func DefaultHeader

func DefaultHeader() httpx.MapHeader

func DefaultLogger

func DefaultLogger(param *AccessLogParam, err error)

func Delete

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

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 GetReaderWithHttpRequestOptions

func GetReaderWithHttpRequestOptions(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 Post

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

func Put

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

func SetProxyEnv

func SetProxyEnv(url string)

func SetTag

func SetTag(t string)

func UserAgentChrome

func UserAgentChrome(version string) string

Types

type AccessLog

type AccessLog func(param *AccessLogParam, err error)

type AccessLogParam

type AccessLogParam struct {
	Method, Url       string
	Request           *http.Request
	Response          *http.Response
	ReqBody, RespBody []byte
	Duration          time.Duration
}

type Body

type Body struct {
	Data        []byte
	ContentType ContentType
}

func NewBody

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

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 (d *Client) AddHeader(k, v string) *Client

func (*Client) BasicAuth

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

func (*Client) Clone

func (d *Client) Clone() *Client

func (*Client) CustomReqMarshal

func (d *Client) CustomReqMarshal(handler func(v any) ([]byte, error)) *Client

func (*Client) CustomResUnMarshal

func (d *Client) CustomResUnMarshal(handler func(data []byte, v any) error) *Client

func (*Client) Delete

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

func (*Client) DeleteRequest

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

func (*Client) DisableLog

func (d *Client) DisableLog() *Client

func (*Client) Do

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

func (*Client) Get

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

func (*Client) GetRaw

func (d *Client) GetRaw(url string, param any) (RawBytes, error)

func (*Client) GetRawX

func (d *Client) GetRawX(url string) (RawBytes, error)

func (*Client) GetRequest

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

func (*Client) GetStream

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

func (*Client) GetStreamX

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

func (*Client) GetX

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

func (*Client) Header

func (d *Client) Header(header httpx.Header) *Client

func (*Client) HttpClient

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

func (*Client) HttpRequestOptions

func (d *Client) HttpRequestOptions(opts ...HttpRequestOption) *Downloader

func (*Client) LogLevel

func (d *Client) LogLevel(lvl LogLevel) *Client

func (*Client) Logger

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

func (*Client) Post

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

func (*Client) PostRequest

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

func (*Client) Proxy

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

func (*Client) Put

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

func (*Client) PutRequest

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

func (*Client) Request

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

func (*Client) ResetProxy

func (d *Client) ResetProxy() *Client

func (*Client) RespDataHandler

func (d *Client) RespDataHandler(handler func(data []byte) ([]byte, error)) *Client

func (*Client) ResponseHandler

func (d *Client) ResponseHandler(handler func(response *http.Response) (retry bool, reader io.ReadCloser, err error)) *Client

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

func (*Client) RetryHandler

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

func (*Client) RetryTimes

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

func (*Client) RetryTimesWithInterval

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

func (*Client) SetHttpClient

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

func (*Client) Timeout

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

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

type ClientType

type ClientType uint8
const (
	ClientTypeApi      ClientType = iota
	ClientTypeDownload ClientType = iota
	ClientTypeUpload   ClientType = iota
)

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
	DModeForceContinue
)

type DownloadReq

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

func NewDownloadReq

func NewDownloadReq(url string) *DownloadReq

func (*DownloadReq) AddHeader

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

func (*DownloadReq) ConcurrencyDownload

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

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

func (*DownloadReq) Download

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

func (*DownloadReq) DownloadAttachment

func (dReq *DownloadReq) DownloadAttachment(dir string) error

func (*DownloadReq) Downloader

func (dReq *DownloadReq) Downloader(c *Downloader) *DownloadReq

func (*DownloadReq) GetMode

func (dReq *DownloadReq) GetMode() DownloadMode

func (*DownloadReq) GetReader

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

func (*DownloadReq) GetResponse

func (dReq *DownloadReq) GetResponse(options ...func(*http.Request)) (*http.Response, error)

func (*DownloadReq) Header

func (req *DownloadReq) Header(header httpx.Header) *DownloadReq

func (*DownloadReq) Mode

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

func (*DownloadReq) OverwriteMode

func (dReq *DownloadReq) OverwriteMode() *DownloadReq

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

func (*DownloadReq) SetDownloader

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

type Downloader

type Downloader = Client

TODO: Range Status(206) PartialContent 下载

func NewDownloader

func NewDownloader(options ...Option) *Downloader

func (*Downloader) Download

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

func (*Downloader) DownloadAttachment

func (d *Downloader) DownloadAttachment(dir string, r *DownloadReq)

func (*Downloader) DownloadReq

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

type File

type File struct {
	Path string
	*os.File
}

func NewFile

func NewFile(path string) (*File, error)

func (*File) ToMutilPart

func (f *File) ToMutilPart(param string) *Multipart

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

func (HttpRequestOption) ToOption

func (o HttpRequestOption) ToOption() Option

type LogLevel

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

type MarshalBody

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

type Multipart

type Multipart struct {
	Param       string
	Name        string
	ContentType string
	io.Reader
}

func NewMultipart

func NewMultipart(param, name, contentType string, reader io.Reader) *Multipart

type Option

type Option func(req *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, opts ...RequestOption) *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(c *Client) *Request

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) Header

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

type RequestOption

type RequestOption func(req *Request)

type ResponseBody

type ResponseBody httpx.RespAnyData

func (*ResponseBody) CheckError

func (res *ResponseBody) CheckError() error

type ResponseBody2

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

func (*ResponseBody2) CheckError

func (res *ResponseBody2) CheckError() error

type ResponseBodyCheck

type ResponseBodyCheck interface {
	CheckError() error
}

func CommonResponse

func CommonResponse(response interface{}) ResponseBodyCheck

func CommonResponse2

func CommonResponse2(response interface{}) ResponseBodyCheck

type SetRequest

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

type UnmarshalBody

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

type UploadMode

type UploadMode uint16
const (
	UModeNormal UploadMode = iota
	UModeStream
	UModeChunked
	UModeChunkedConcurrent
)

type UploadReq

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

func NewUploadReq

func NewUploadReq(url string) *UploadReq

func (*UploadReq) Boundary

func (r *UploadReq) Boundary(boundary string) *UploadReq

func (*UploadReq) ChunkSize

func (r *UploadReq) ChunkSize(chunkSize int) *UploadReq

func (*UploadReq) Mode

func (r *UploadReq) Mode(mode UploadMode) *UploadReq

func (*UploadReq) UploadMultipart

func (r *UploadReq) UploadMultipart(formData map[string]string, files ...*Multipart) error

func (*UploadReq) UploadMultipartChunked

func (r *UploadReq) UploadMultipartChunked(formData map[string]string, file Multipart) error

默认单文件

func (*UploadReq) UploadRaw

func (r *UploadReq) UploadRaw(reader io.Reader, name string) error

func (*UploadReq) UploadRawChunked

func (r *UploadReq) UploadRawChunked(reader io.Reader, name string) error

func (*UploadReq) UploadStream

func (r *UploadReq) UploadStream(oReader io.Reader) error

func (*UploadReq) Uploader

func (r *UploadReq) Uploader(u *Uploader) *UploadReq

type Uploader

type Uploader = Client

func NewUploader

func NewUploader() *Uploader

func (*Uploader) UploadReq

func (d *Uploader) UploadReq(url string) *UploadReq

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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