treasurer/pkg/client/request.go

59 lines
1.2 KiB
Go
Raw Normal View History

2023-06-13 13:22:51 +00:00
package client
import (
"context"
2024-05-02 11:19:06 +00:00
"fmt"
2023-06-13 13:22:51 +00:00
"github.com/go-resty/resty/v2"
)
func buildRequest(ctx context.Context, settings *RequestSettings) *resty.Request {
request := resty.New().R().SetContext(ctx)
if settings == nil {
return request
}
if settings.Body != nil {
request.SetBody(settings.Body)
2024-05-02 11:19:06 +00:00
fmt.Println("REQUEST", settings.Body)
2023-06-13 13:22:51 +00:00
}
if settings.QueryParams != nil {
request.SetQueryParams(settings.QueryParams)
}
request.SetHeaders(settings.Headers)
return request
}
func makeRequest[T any, R any](url string, requestMethod func(url string) (*resty.Response, error)) (*Response[T, R], error) {
2024-05-02 22:05:02 +00:00
responseInstance, err := requestMethod(url)
2023-06-13 13:22:51 +00:00
if err != nil {
return nil, err
}
if responseInstance.IsError() {
responseBody, parseErr := parseResponse[R](responseInstance.Body(), responseInstance.RawResponse)
if parseErr != nil {
return nil, parseErr
}
return &Response[T, R]{
StatusCode: responseInstance.StatusCode(),
Error: responseBody,
}, nil
}
responseBody, parseErr := parseResponse[T](responseInstance.Body(), responseInstance.RawResponse)
if parseErr != nil {
return nil, parseErr
}
return &Response[T, R]{
StatusCode: responseInstance.StatusCode(),
Body: responseBody,
}, nil
}