in internal/apiclient/httpclient.go [47:112]
func HttpClient(params ...string) (respBody []byte, err error) {
// The first parameter is url. If only one parameter is sent, assume GET
// The second parameter is the payload. The two parameters are sent, assume POST
// THe third parameter is the method. If three parameters are sent, assume method in param
// The fourth parameter is content type
var req *http.Request
contentType := "application/json"
client, err := getHttpClient()
if err != nil {
return nil, err
}
clilog.Debug.Println("Connecting to: ", params[0])
ctx := context.Background()
switch paramLen := len(params); paramLen {
case 1:
clilog.Debug.Println("Method: GET")
req, err = http.NewRequestWithContext(ctx, http.MethodGet, params[0], nil)
case 2:
// some POST functions don't have a body
clilog.Debug.Println("Method: POST")
if len([]byte(params[1])) > 0 {
payload, _ := PrettifyJson([]byte(params[1]))
clilog.Debug.Println("Payload: ", string(payload))
}
req, err = http.NewRequestWithContext(ctx, http.MethodPost, params[0], bytes.NewBuffer([]byte(params[1])))
case 3:
if req, err = getRequest(params); err != nil {
return nil, err
}
case 4:
if req, err = getRequest(params); err != nil {
return nil, err
}
contentType = params[3]
default:
return nil, errors.New("unsupported method")
}
if err != nil {
clilog.Error.Println("error in client: ", err)
return nil, err
}
req, err = setAuthHeader(req)
if err != nil {
return nil, err
}
clilog.Debug.Println("Content-Type : ", contentType)
req.Header.Set("Content-Type", contentType)
if DryRun() {
return nil, nil
}
resp, err := client.Do(req)
if err != nil {
clilog.Error.Println("error connecting: ", err)
return nil, err
}
return handleResponse(resp)
}