refactor(netxlite): expose useful HTTPTransport/DNSTransport factories (#813)
These factories will soon be useful to finish with https://github.com/ooni/probe/issues/2135.
This commit is contained in:
parent
1a706e47bc
commit
1685ef75b5
9 changed files with 224 additions and 30 deletions
|
|
@ -9,6 +9,7 @@ import (
|
|||
"errors"
|
||||
"net"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"time"
|
||||
|
||||
oohttp "github.com/ooni/oohttp"
|
||||
|
|
@ -105,6 +106,25 @@ func (txp *httpTransportConnectionsCloser) CloseIdleConnections() {
|
|||
txp.TLSDialer.CloseIdleConnections()
|
||||
}
|
||||
|
||||
// NewHTTPTransportWithLoggerResolverAndOptionalProxyURL creates an HTTPTransport using
|
||||
// the given logger and resolver and an optional proxy URL.
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
// - logger is the MANDATORY logger;
|
||||
//
|
||||
// - resolver is the MANDATORY resolver;
|
||||
//
|
||||
// - purl is the OPTIONAL proxy URL.
|
||||
func NewHTTPTransportWithLoggerResolverAndOptionalProxyURL(
|
||||
logger model.DebugLogger, resolver model.Resolver, purl *url.URL) model.HTTPTransport {
|
||||
dialer := NewDialerWithResolver(logger, resolver)
|
||||
dialer = MaybeWrapWithProxyDialer(dialer, purl)
|
||||
handshaker := NewTLSHandshakerStdlib(logger)
|
||||
tlsDialer := NewTLSDialer(dialer, handshaker)
|
||||
return NewHTTPTransport(logger, dialer, tlsDialer)
|
||||
}
|
||||
|
||||
// NewHTTPTransportWithResolver creates a new HTTP transport using
|
||||
// the stdlib for everything but the given resolver.
|
||||
func NewHTTPTransportWithResolver(logger model.DebugLogger, reso model.Resolver) model.HTTPTransport {
|
||||
|
|
@ -335,6 +355,12 @@ func NewHTTPClientStdlib(logger model.DebugLogger) model.HTTPClient {
|
|||
return NewHTTPClient(txp)
|
||||
}
|
||||
|
||||
// NewHTTPClientWithResolver creates a new HTTPTransport using the
|
||||
// given resolver and then from that builds an HTTPClient.
|
||||
func NewHTTPClientWithResolver(logger model.Logger, reso model.Resolver) model.HTTPClient {
|
||||
return NewHTTPClient(NewHTTPTransportWithResolver(logger, reso))
|
||||
}
|
||||
|
||||
// NewHTTPClient creates a new, wrapped HTTPClient using the given transport.
|
||||
func NewHTTPClient(txp model.HTTPTransport) model.HTTPClient {
|
||||
return WrapHTTPClient(&http.Client{Transport: txp})
|
||||
|
|
|
|||
Loading…
Reference in a new issue