func()

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)}
}