60 lines
1.3 KiB
Go
60 lines
1.3 KiB
Go
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)
|
|
}
|