|
@@ -2,8 +2,10 @@ package http_client
|
|
|
|
|
|
import (
|
|
|
"encoding/json"
|
|
|
+ "git.sxidc.com/go-tools/utils/strutils"
|
|
|
"github.com/go-resty/resty/v2"
|
|
|
"github.com/pkg/errors"
|
|
|
+ "io"
|
|
|
)
|
|
|
|
|
|
type RequestOption func(request *Request)
|
|
@@ -32,6 +34,12 @@ func WithRequestFiles(files map[string]string) RequestOption {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func WithRequestFileReader(paramName string, fileName string, reader io.Reader) RequestOption {
|
|
|
+ return func(request *Request) {
|
|
|
+ request.SetFileReader(paramName, fileName, reader)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func WithRequestFormData(data map[string]string) RequestOption {
|
|
|
return func(request *Request) {
|
|
|
request.SetFormData(data)
|
|
@@ -74,6 +82,14 @@ func (request *Request) SetFiles(files map[string]string) {
|
|
|
request.request.SetFiles(files)
|
|
|
}
|
|
|
|
|
|
+func (request *Request) SetFileReader(paramName string, fileName string, reader io.Reader) {
|
|
|
+ if strutils.IsStringEmpty(paramName) || strutils.IsStringEmpty(fileName) || reader == nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ request.request.SetFileReader(paramName, fileName, reader)
|
|
|
+}
|
|
|
+
|
|
|
func (request *Request) SetFormData(data map[string]string) {
|
|
|
if data == nil || len(data) == 0 {
|
|
|
return
|
|
@@ -89,7 +105,11 @@ func (request *Request) Post(url string, body any, opts ...RequestOption) (*Resp
|
|
|
|
|
|
restyRequest := request.request
|
|
|
|
|
|
- resp, err := restyRequest.SetBody(body).Post(url)
|
|
|
+ if body != nil {
|
|
|
+ restyRequest = restyRequest.SetBody(body)
|
|
|
+ }
|
|
|
+
|
|
|
+ resp, err := restyRequest.Post(url)
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
@@ -127,7 +147,11 @@ func (request *Request) Put(url string, body any, opts ...RequestOption) (*Respo
|
|
|
|
|
|
restyRequest := request.request
|
|
|
|
|
|
- resp, err := restyRequest.SetBody(body).Put(url)
|
|
|
+ if body != nil {
|
|
|
+ restyRequest = restyRequest.SetBody(body)
|
|
|
+ }
|
|
|
+
|
|
|
+ resp, err := restyRequest.Put(url)
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|