ooni-probe-cli/internal/engine/netx/httptransport/httptransport.go

48 lines
1.3 KiB
Go
Raw Normal View History

// Package httptransport contains HTTP transport extensions.
package httptransport
import (
"context"
"crypto/tls"
"net"
"net/http"
"github.com/lucas-clemente/quic-go"
)
// Config contains the configuration required for constructing an HTTP transport
type Config struct {
Dialer Dialer
QUICDialer QUICDialer
TLSDialer TLSDialer
TLSConfig *tls.Config
}
// Dialer is the definition of dialer assumed by this package.
type Dialer interface {
DialContext(ctx context.Context, network, address string) (net.Conn, error)
}
// TLSDialer is the definition of a TLS dialer assumed by this package.
type TLSDialer interface {
DialTLSContext(ctx context.Context, network, address string) (net.Conn, error)
}
// QUICDialer is the definition of dialer for QUIC assumed by this package.
type QUICDialer interface {
DialContext(ctx context.Context, network, addr string, tlsCfg *tls.Config, cfg *quic.Config) (quic.EarlySession, error)
}
// RoundTripper is the definition of http.RoundTripper used by this package.
type RoundTripper interface {
RoundTrip(req *http.Request) (*http.Response, error)
CloseIdleConnections()
}
// Resolver is the interface we expect from a resolver
type Resolver interface {
LookupHost(ctx context.Context, hostname string) (addrs []string, err error)
Network() string
Address() string
}