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-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
 | 
			
		||||
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"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// RequestOptions 用于配置请求的各种选项
 | 
			
		||||
type RequestOptions struct {
 | 
			
		||||
// Options 用于配置请求的各种选项
 | 
			
		||||
type Options struct {
 | 
			
		||||
	Headers http.Header
 | 
			
		||||
 | 
			
		||||
	Timeout        time.Duration
 | 
			
		||||
	StatusCodeFunc func(int) bool
 | 
			
		||||
 | 
			
		||||
	Timeout time.Duration
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RequestOption 是一个函数类型,用于设置RequestOptions的各个字段
 | 
			
		||||
type RequestOption func(*RequestOptions)
 | 
			
		||||
// Option 是一个函数类型,用于设置RequestOptions的各个字段
 | 
			
		||||
type Option func(*Options)
 | 
			
		||||
 | 
			
		||||
// WithTimeout 设置请求超时时间的选项函数
 | 
			
		||||
func WithTimeout(timeout time.Duration) RequestOption {
 | 
			
		||||
	return func(options *RequestOptions) {
 | 
			
		||||
func WithTimeout(timeout time.Duration) Option {
 | 
			
		||||
	return func(options *Options) {
 | 
			
		||||
		options.Timeout = timeout
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// WithHeaders 设置请求头的选项函数
 | 
			
		||||
func WithHeaders(headers http.Header) RequestOption {
 | 
			
		||||
	return func(options *RequestOptions) {
 | 
			
		||||
func WithHeaders(headers http.Header) Option {
 | 
			
		||||
	return func(options *Options) {
 | 
			
		||||
		options.Headers = headers
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// WithStatusCodeFunc 设置自定义状态码处理函数的选项函数
 | 
			
		||||
func WithStatusCodeFunc(statusCodeFunc func(int) bool) RequestOption {
 | 
			
		||||
	return func(options *RequestOptions) {
 | 
			
		||||
func WithStatusCodeFunc(statusCodeFunc func(int) bool) Option {
 | 
			
		||||
	return func(options *Options) {
 | 
			
		||||
		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...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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...)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Request 封装的HTTP请求函数,使用选项模式进行配置
 | 
			
		||||
func Request(_ context.Context, method, url string, body []byte, options ...RequestOption) (http.Header, []byte, error) {
 | 
			
		||||
	// 设置默认选项
 | 
			
		||||
	o := &RequestOptions{
 | 
			
		||||
func Request(_ context.Context, method, url string, body []byte, options ...Option) (http.Header, []byte, error) {
 | 
			
		||||
	o := &Options{
 | 
			
		||||
		Headers: http.Header{
 | 
			
		||||
			"Content-Type": []string{"application/json"},
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		Timeout: 15 * time.Second,
 | 
			
		||||
 | 
			
		||||
		StatusCodeFunc: func(code int) bool {
 | 
			
		||||
| 
						 | 
				
			
			@ -67,7 +67,6 @@ func Request(_ context.Context, method, url string, body []byte, options ...Requ
 | 
			
		|||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 根据传入的选项更新默认选项
 | 
			
		||||
	for _, option := range options {
 | 
			
		||||
		option(o)
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue