47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package transport
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"net/http"
|
|
)
|
|
|
|
// Sender is an interface that clients must implement
|
|
// to be able to send requests to a remote connection.
|
|
type Sender interface {
|
|
// Do sends request to a remote endpoint.
|
|
Do(*http.Request) (*http.Response, error)
|
|
}
|
|
|
|
// Client is an interface that abstracts all remote connections.
|
|
type Client interface {
|
|
Sender
|
|
// Secure tells whether the connection is secure or not.
|
|
Secure() bool
|
|
// Scheme returns the connection protocol the client uses.
|
|
Scheme() string
|
|
// TLSConfig returns any TLS configuration the client uses.
|
|
TLSConfig() *tls.Config
|
|
}
|
|
|
|
// tlsInfo returns information about the TLS configuration.
|
|
type tlsInfo struct {
|
|
tlsConfig *tls.Config
|
|
}
|
|
|
|
// TLSConfig returns the TLS configuration.
|
|
func (t *tlsInfo) TLSConfig() *tls.Config {
|
|
return t.tlsConfig
|
|
}
|
|
|
|
// Scheme returns protocol scheme to use.
|
|
func (t *tlsInfo) Scheme() string {
|
|
if t.tlsConfig != nil {
|
|
return "https"
|
|
}
|
|
return "http"
|
|
}
|
|
|
|
// Secure returns true if there is a TLS configuration.
|
|
func (t *tlsInfo) Secure() bool {
|
|
return t.tlsConfig != nil
|
|
}
|