64 lines
1.2 KiB
Go
64 lines
1.2 KiB
Go
package client
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"net/http"
|
|
)
|
|
|
|
type Client struct {
|
|
httpClient *http.Client
|
|
authenticator Authenticator
|
|
userAgent string
|
|
}
|
|
|
|
func NewClient() *Client {
|
|
defaultTripper := NewDefaultTransport()
|
|
httpClient := &http.Client{
|
|
Transport: defaultTripper,
|
|
}
|
|
return &Client{
|
|
httpClient: httpClient,
|
|
userAgent: "ociClient/1.0",
|
|
}
|
|
}
|
|
|
|
func (cli *Client) SetAuthenticator(auth Authenticator) {
|
|
cli.authenticator = auth
|
|
}
|
|
|
|
func (cli *Client) SetTransport(transport http.RoundTripper) {
|
|
cli.httpClient.Transport = transport
|
|
}
|
|
|
|
type WrapTransport struct {
|
|
transport http.RoundTripper
|
|
}
|
|
|
|
func NewWrapTransport(transport http.RoundTripper) *WrapTransport {
|
|
return &WrapTransport{
|
|
transport: transport,
|
|
}
|
|
}
|
|
|
|
func (wrap *WrapTransport) RoundTrip(req *http.Request) (*http.Response, error) {
|
|
return wrap.transport.RoundTrip(req)
|
|
}
|
|
|
|
type DefaultTransport struct {
|
|
transport http.RoundTripper
|
|
}
|
|
|
|
func NewDefaultTransport() *DefaultTransport {
|
|
return &DefaultTransport{
|
|
transport: &http.Transport{
|
|
TLSClientConfig: &tls.Config{
|
|
InsecureSkipVerify: true,
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
func (wrap *DefaultTransport) RoundTrip(req *http.Request) (*http.Response, error) {
|
|
return wrap.transport.RoundTrip(req)
|
|
}
|