package request import ( "net/http/cookiejar" "time" "github.com/go-resty/resty/v2" ) type RequestClient struct { client *resty.Client } func NewRequestClient(baseURL string, headers map[string]string) *RequestClient { client := resty.New() jar, _ := cookiejar.New(nil) client. SetBaseURL(baseURL). SetTimeout(60 * time.Second). SetCookieJar(jar). SetRetryCount(3) if headers != nil { client.SetHeaders(headers) } return &RequestClient{client} } func (r *RequestClient) Get(endpoint string, queryParams map[string]string) (*resty.Response, error) { resp, err := r.client.R(). SetQueryParams(queryParams). Get(endpoint) return resp, err } func (r *RequestClient) Post(endpoint string, body interface{}, result interface{}) (*resty.Response, error) { resp, err := r.client.R(). SetBody(body). SetResult(result). Post(endpoint) return resp, err } func (r *RequestClient) Put(endpoint string, body interface{}) (*resty.Response, error) { resp, err := r.client.R(). SetBody(body). Put(endpoint) return resp, err } func (r *RequestClient) Delete(endpoint string) (*resty.Response, error) { resp, err := r.client.R().Delete(endpoint) return resp, err } func (r *RequestClient) SetHeaders(headers map[string]string) { r.client.SetHeaders(headers) }