loveckiy.ivan
11 months ago
4 changed files with 142 additions and 134 deletions
@ -1,51 +0,0 @@ |
|||
package curl |
|||
|
|||
import "net/http" |
|||
|
|||
type Builder interface { |
|||
Method(value string) Builder |
|||
Url(value string) Builder |
|||
} |
|||
|
|||
type builder struct { |
|||
method, url, payload string |
|||
response interface{} |
|||
headers map[string]string |
|||
cookies []*http.Cookie |
|||
} |
|||
|
|||
func (b *builder) Method(value string) Builder { |
|||
return &builder{ |
|||
method: value, |
|||
} |
|||
} |
|||
|
|||
func (b *builder) Url(value string) Builder { |
|||
return &builder{ |
|||
url: value, |
|||
} |
|||
} |
|||
|
|||
func (b *builder) Payload(value string) Builder { |
|||
return &builder{ |
|||
payload: value, |
|||
} |
|||
} |
|||
|
|||
func (b *builder) MapToObj(value string) Builder { |
|||
return &builder{ |
|||
payload: value, |
|||
} |
|||
} |
|||
|
|||
func (b *builder) Headers(value string) Builder { |
|||
return &builder{ |
|||
payload: value, |
|||
} |
|||
} |
|||
|
|||
func (b *builder) Cookies(value string) Builder { |
|||
return &builder{ |
|||
payload: value, |
|||
} |
|||
} |
@ -0,0 +1,63 @@ |
|||
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, |
|||
}, |
|||
} |
|||
} |
@ -1,39 +0,0 @@ |
|||
package curl |
|||
|
|||
import ( |
|||
"crypto/tls" |
|||
"net/http" |
|||
"time" |
|||
) |
|||
|
|||
const shortDuration = 1 * time.Second |
|||
|
|||
type RequestClient struct { |
|||
client http.Client |
|||
builder |
|||
} |
|||
|
|||
var defaultRequestClient RequestClient |
|||
|
|||
// Register регистрируем клиента по-умолчанию
|
|||
func Register(timeout time.Duration) { |
|||
defaultRequestClient = NewClient(timeout) |
|||
return |
|||
} |
|||
|
|||
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, |
|||
}, |
|||
} |
|||
} |
Loading…
Reference in new issue