Documentation
¶
Overview ¶
Package httptransport contains HTTP transport extensions. Here we define a http.Transport that emits events.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type ByteCountingTransport ¶
type ByteCountingTransport struct {
RoundTripper
Counter *bytecounter.Counter
}
ByteCountingTransport is a RoundTripper that counts bytes.
type Config ¶
type Config struct {
ByteCounter *bytecounter.Counter // default: no byte counting
Dialer Dialer // default: dialer.DNSDialer
Logger Logger // default: no logging
Proxy ProxyFunc // default: no proxy
Resolver Resolver // default: system resolver
TLSConfig *tls.Config // default: attempt using h2
TLSDialer TLSDialer // default: dialer.TLSDialer
}
Config contains configuration for creating a new transport. When any field of Config is nil/empty, we will use a suitable default.
type Dialer ¶
type Dialer interface {
DialContext(ctx context.Context, network, address string) (net.Conn, error)
}
Dialer is the definition of dialer assumed by this package.
type LoggingTransport ¶
type LoggingTransport struct {
RoundTripper
Logger Logger
}
LoggingTransport is a logging transport
type Resolver ¶
type Resolver interface {
LookupHost(ctx context.Context, hostname string) (addrs []string, err error)
}
Resolver is the interface we expect from a resolver
type RoundTripper ¶
type RoundTripper interface {
RoundTrip(req *http.Request) (*http.Response, error)
CloseIdleConnections()
}
RoundTripper is the definition of http.RoundTripper used by this package.
func New ¶
func New(config Config) RoundTripper
New creates a new RoundTripper. You can further extend the returned RoundTripper before wrapping it into an http.Client.
type TLSDialer ¶
type TLSDialer interface {
DialTLSContext(ctx context.Context, network, address string) (net.Conn, error)
}
TLSDialer is the definition of a TLS dialer assumed by this package.
type UserAgentTransport ¶
type UserAgentTransport struct {
RoundTripper
}
UserAgentTransport is a transport that ensures that we always set an OONI specific default User-Agent header.