ysf
This commit is contained in:
parent
8ef34584ad
commit
ce9fc21598
14
Makefile
14
Makefile
|
@ -65,5 +65,17 @@ wechat_redpack:
|
||||||
make build-linux name=wechat_redpack && \
|
make build-linux name=wechat_redpack && \
|
||||||
make build-win name=wechat_redpack
|
make build-win name=wechat_redpack
|
||||||
|
|
||||||
|
.PHONY: union_pay_cpn
|
||||||
|
union_pay_cpn:
|
||||||
|
make build-mac name=union_pay_cpn && \
|
||||||
|
make build-linux name=union_pay_cpn && \
|
||||||
|
make build-win name=union_pay_cpn
|
||||||
|
|
||||||
|
.PHONY: union_pay_redpack
|
||||||
|
union_pay_redpack:
|
||||||
|
make build-mac name=union_pay_redpack && \
|
||||||
|
make build-linux name=union_pay_redpack && \
|
||||||
|
make build-win name=union_pay_redpack
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: zltx_v1 zltx_card_v1 alipay_cpn alipay_redpack wechat_cpn wechat_redpack
|
all: zltx_v1 zltx_card_v1 alipay_cpn alipay_redpack wechat_cpn wechat_redpack union_pay_cpn union_pay_redpack
|
|
@ -9,57 +9,57 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RequestOptions 用于配置请求的各种选项
|
// Options 用于配置请求的各种选项
|
||||||
type RequestOptions struct {
|
type Options struct {
|
||||||
Headers http.Header
|
Headers http.Header
|
||||||
|
|
||||||
Timeout time.Duration
|
|
||||||
StatusCodeFunc func(int) bool
|
StatusCodeFunc func(int) bool
|
||||||
|
|
||||||
|
Timeout time.Duration
|
||||||
}
|
}
|
||||||
|
|
||||||
// RequestOption 是一个函数类型,用于设置RequestOptions的各个字段
|
// Option 是一个函数类型,用于设置RequestOptions的各个字段
|
||||||
type RequestOption func(*RequestOptions)
|
type Option func(*Options)
|
||||||
|
|
||||||
// WithTimeout 设置请求超时时间的选项函数
|
// WithTimeout 设置请求超时时间的选项函数
|
||||||
func WithTimeout(timeout time.Duration) RequestOption {
|
func WithTimeout(timeout time.Duration) Option {
|
||||||
return func(options *RequestOptions) {
|
return func(options *Options) {
|
||||||
options.Timeout = timeout
|
options.Timeout = timeout
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithHeaders 设置请求头的选项函数
|
// WithHeaders 设置请求头的选项函数
|
||||||
func WithHeaders(headers http.Header) RequestOption {
|
func WithHeaders(headers http.Header) Option {
|
||||||
return func(options *RequestOptions) {
|
return func(options *Options) {
|
||||||
options.Headers = headers
|
options.Headers = headers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithStatusCodeFunc 设置自定义状态码处理函数的选项函数
|
// WithStatusCodeFunc 设置自定义状态码处理函数的选项函数
|
||||||
func WithStatusCodeFunc(statusCodeFunc func(int) bool) RequestOption {
|
func WithStatusCodeFunc(statusCodeFunc func(int) bool) Option {
|
||||||
return func(options *RequestOptions) {
|
return func(options *Options) {
|
||||||
options.StatusCodeFunc = statusCodeFunc
|
options.StatusCodeFunc = statusCodeFunc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Post(ctx context.Context, url string, body []byte, options ...RequestOption) (http.Header, []byte, error) {
|
func Post(ctx context.Context, url string, body []byte, options ...Option) (http.Header, []byte, error) {
|
||||||
return Request(ctx, http.MethodPost, url, body, options...)
|
return Request(ctx, http.MethodPost, url, body, options...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Get(ctx context.Context, url string, options ...RequestOption) (http.Header, []byte, error) {
|
func Get(ctx context.Context, url string, options ...Option) (http.Header, []byte, error) {
|
||||||
return Request(ctx, http.MethodGet, url, nil, options...)
|
return Request(ctx, http.MethodGet, url, nil, options...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Put(ctx context.Context, url string, body []byte, options ...RequestOption) (http.Header, []byte, error) {
|
func Put(ctx context.Context, url string, body []byte, options ...Option) (http.Header, []byte, error) {
|
||||||
return Request(ctx, http.MethodPut, url, body, options...)
|
return Request(ctx, http.MethodPut, url, body, options...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Request 封装的HTTP请求函数,使用选项模式进行配置
|
func Request(_ context.Context, method, url string, body []byte, options ...Option) (http.Header, []byte, error) {
|
||||||
func Request(_ context.Context, method, url string, body []byte, options ...RequestOption) (http.Header, []byte, error) {
|
o := &Options{
|
||||||
// 设置默认选项
|
|
||||||
o := &RequestOptions{
|
|
||||||
Headers: http.Header{
|
Headers: http.Header{
|
||||||
"Content-Type": []string{"application/json"},
|
"Content-Type": []string{"application/json"},
|
||||||
},
|
},
|
||||||
|
|
||||||
Timeout: 15 * time.Second,
|
Timeout: 15 * time.Second,
|
||||||
|
|
||||||
StatusCodeFunc: func(code int) bool {
|
StatusCodeFunc: func(code int) bool {
|
||||||
|
@ -67,7 +67,6 @@ func Request(_ context.Context, method, url string, body []byte, options ...Requ
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据传入的选项更新默认选项
|
|
||||||
for _, option := range options {
|
for _, option := range options {
|
||||||
option(o)
|
option(o)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue