mirror of
https://github.com/duke-git/lancet.git
synced 2026-02-13 17:22:27 +08:00
refactor: reduce gocyclo of doHttpRequest func
This commit is contained in:
@@ -22,27 +22,27 @@ import (
|
|||||||
|
|
||||||
//HttpGet send get http request
|
//HttpGet send get http request
|
||||||
func HttpGet(url string, params ...interface{}) (*http.Response, error) {
|
func HttpGet(url string, params ...interface{}) (*http.Response, error) {
|
||||||
return request(http.MethodGet, url, params...)
|
return doHttpRequest(http.MethodGet, url, params...)
|
||||||
}
|
}
|
||||||
|
|
||||||
//HttpPost send post http request
|
//HttpPost send post http request
|
||||||
func HttpPost(url string, params ...interface{}) (*http.Response, error) {
|
func HttpPost(url string, params ...interface{}) (*http.Response, error) {
|
||||||
return request(http.MethodPost, url, params...)
|
return doHttpRequest(http.MethodPost, url, params...)
|
||||||
}
|
}
|
||||||
|
|
||||||
//HttpPut send put http request
|
//HttpPut send put http request
|
||||||
func HttpPut(url string, params ...interface{}) (*http.Response, error) {
|
func HttpPut(url string, params ...interface{}) (*http.Response, error) {
|
||||||
return request(http.MethodPut, url, params...)
|
return doHttpRequest(http.MethodPut, url, params...)
|
||||||
}
|
}
|
||||||
|
|
||||||
//HttpDelete send delete http request
|
//HttpDelete send delete http request
|
||||||
func HttpDelete(url string, params ...interface{}) (*http.Response, error) {
|
func HttpDelete(url string, params ...interface{}) (*http.Response, error) {
|
||||||
return request(http.MethodDelete, url, params...)
|
return doHttpRequest(http.MethodDelete, url, params...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// HttpPatch send patch http request
|
// HttpPatch send patch http request
|
||||||
func HttpPatch(url string, params ...interface{}) (*http.Response, error) {
|
func HttpPatch(url string, params ...interface{}) (*http.Response, error) {
|
||||||
return request(http.MethodPatch, url, params...)
|
return doHttpRequest(http.MethodPatch, url, params...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParseHttpResponse decode http response to specified interface
|
// ParseHttpResponse decode http response to specified interface
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
func request(method, reqUrl string, params ...interface{}) (*http.Response, error) {
|
func doHttpRequest(method, reqUrl string, params ...interface{}) (*http.Response, error) {
|
||||||
if len(reqUrl) == 0 {
|
if len(reqUrl) == 0 {
|
||||||
return nil, errors.New("url should be specified")
|
return nil, errors.New("url should be specified")
|
||||||
}
|
}
|
||||||
@@ -24,53 +24,29 @@ func request(method, reqUrl string, params ...interface{}) (*http.Response, erro
|
|||||||
}
|
}
|
||||||
|
|
||||||
client := &http.Client{}
|
client := &http.Client{}
|
||||||
|
err := setUrl(req, reqUrl)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
switch len(params) {
|
switch len(params) {
|
||||||
case 0:
|
|
||||||
err := setUrl(req, reqUrl)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
case 1:
|
case 1:
|
||||||
err := setUrl(req, reqUrl)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
err = setHeader(req, params[0])
|
err = setHeader(req, params[0])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
err := setHeader(req, params[0])
|
err := setHeaderAndQueryParam(req, reqUrl, params[0], params[1])
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
err = setQueryParam(req, reqUrl, params[1])
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
case 3:
|
case 3:
|
||||||
err := setHeader(req, params[0])
|
err := setHeaderAndQueryAndBody(req, reqUrl, params[0], params[1], params[2])
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
err = setQueryParam(req, reqUrl, params[1])
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
err = setBodyByte(req, params[2])
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
case 4:
|
case 4:
|
||||||
err := setHeader(req, params[0])
|
err := setHeaderAndQueryAndBody(req, reqUrl, params[0], params[1], params[2])
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
err = setQueryParam(req, reqUrl, params[1])
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
err = setBodyByte(req, params[2])
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -78,13 +54,40 @@ func request(method, reqUrl string, params ...interface{}) (*http.Response, erro
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, e := client.Do(req)
|
resp, e := client.Do(req)
|
||||||
return resp, e
|
return resp, e
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setHeaderAndQueryParam(req *http.Request, reqUrl string, header, queryParam interface{}) error {
|
||||||
|
err := setHeader(req, header)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = setQueryParam(req, reqUrl, queryParam)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func setHeaderAndQueryAndBody(req *http.Request, reqUrl string, header, queryParam, body interface{}) error {
|
||||||
|
err := setHeader(req, header)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = setQueryParam(req, reqUrl, queryParam)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = setBodyByte(req, body)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func setHeader(req *http.Request, header interface{}) error {
|
func setHeader(req *http.Request, header interface{}) error {
|
||||||
if header != nil {
|
if header != nil {
|
||||||
switch v := header.(type) {
|
switch v := header.(type) {
|
||||||
@@ -109,6 +112,7 @@ func setHeader(req *http.Request, header interface{}) error {
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func setUrl(req *http.Request, reqUrl string) error {
|
func setUrl(req *http.Request, reqUrl string) error {
|
||||||
u, err := url.Parse(reqUrl)
|
u, err := url.Parse(reqUrl)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -117,6 +121,7 @@ func setUrl(req *http.Request, reqUrl string) error {
|
|||||||
req.URL = u
|
req.URL = u
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func setQueryParam(req *http.Request, reqUrl string, queryParam interface{}) error {
|
func setQueryParam(req *http.Request, reqUrl string, queryParam interface{}) error {
|
||||||
var values url.Values
|
var values url.Values
|
||||||
if queryParam != nil {
|
if queryParam != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user