You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.2 KiB
63 lines
1.2 KiB
package curl
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
const shortDuration = 1 * time.Second
|
|
|
|
var defaultRequestClient RequestClient
|
|
|
|
type RequestClient struct {
|
|
client http.Client
|
|
}
|
|
|
|
func (r *RequestClient) NewRequest() *request {
|
|
cloneRequest := defaultRequestClient.clone()
|
|
|
|
return &request{
|
|
client: cloneRequest.client,
|
|
}
|
|
}
|
|
|
|
func (r *RequestClient) clone() RequestClient {
|
|
return RequestClient{
|
|
client: r.client,
|
|
}
|
|
}
|
|
|
|
// RegisterDefaultClient регистрируем клиента по-умолчанию
|
|
func RegisterDefaultClient(timeout time.Duration) {
|
|
defaultRequestClient = NewClient(timeout)
|
|
|
|
return
|
|
}
|
|
|
|
// NewRequestDefault создаем запрос используя дефалтового клиента
|
|
func NewRequestDefault() *request {
|
|
cloneRequest := defaultRequestClient.clone()
|
|
|
|
return &request{
|
|
client: cloneRequest.client,
|
|
}
|
|
}
|
|
|
|
// NewClient создаем нового клиента
|
|
func NewClient(timeout time.Duration) RequestClient {
|
|
if timeout == 0 {
|
|
timeout = 2 * time.Second
|
|
}
|
|
|
|
return RequestClient{
|
|
client: http.Client{
|
|
Transport: &http.Transport{
|
|
TLSClientConfig: &tls.Config{
|
|
InsecureSkipVerify: true,
|
|
},
|
|
},
|
|
Timeout: timeout,
|
|
},
|
|
}
|
|
}
|
|
|