59 lines
1.3 KiB
Go
59 lines
1.3 KiB
Go
package client
|
|
|
|
import (
|
|
"context"
|
|
|
|
"fmt"
|
|
"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)
|
|
fmt.Println("REQUEST", settings.Body)
|
|
}
|
|
|
|
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) {
|
|
responseInstance, err := func() (*resty.Response,error){return &resty.Response{},nil}()/* requestMethod(url) */
|
|
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
|
|
}
|