in pitr/cli/pkg/httputils/req.go [73:127]
func (r *req) Send(body any) error {
var (
bs []byte
err error
)
if r.body != nil {
bs, err = json.Marshal(r.body)
if err != nil {
return fmt.Errorf("json.Marshal return err=%w", err)
}
}
_req, err := http.NewRequestWithContext(r.ctx, r.method, r.url, bytes.NewReader(bs))
if err != nil {
return fmt.Errorf("new request failure,err=%w", err)
}
// set header
_req = r.setReqHeader(_req)
for k, v := range r.query {
values := _req.URL.Query()
values.Add(k, v)
_req.URL.RawQuery = values.Encode()
}
tr := &http.Transport{
//nolint:gosec
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
c := &http.Client{Transport: tr}
resp, err := c.Do(_req)
if err != nil {
return fmt.Errorf("http request err=%w", err)
}
defer resp.Body.Close()
all, err := io.ReadAll(resp.Body)
if err != nil {
return fmt.Errorf("invalid response,err=%w", err)
}
if body != nil {
if err = json.Unmarshal(all, body); err != nil {
return fmt.Errorf("json unmarshal return err=%w", err)
}
}
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("response status code is not 200, code=%d", resp.StatusCode)
}
return nil
}