in internal/cloud/endpoints.go [178:219]
func (client *QdClient) doRequestAttempt(request *QdCloudRequest) ([]byte, error) {
requestUrl := client.apiUrl + request.Path
var resp *http.Response
var responseErr error
req, err := http.NewRequest(request.Method, requestUrl, bytes.NewBuffer(request.Body))
if err != nil {
return nil, err
}
if client.token != "" {
req.Header.Set("Authorization", "Bearer "+client.token)
}
req.Header.Set("Content-Type", "application/json")
for key, value := range request.Headers {
req.Header.Set(key, value)
}
resp, responseErr = client.httpClient.Do(req)
if responseErr != nil {
return nil, responseErr
}
defer func(Body io.ReadCloser) {
err := Body.Close()
if err != nil {
log.Fatal(err)
}
}(resp.Body)
responseBody, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}
if resp.StatusCode >= http.StatusOK && resp.StatusCode < http.StatusMultipleChoices {
return responseBody, nil
}
return nil, &APIError{StatusCode: resp.StatusCode, Message: string(responseBody)}
}