Struct TlsConnector
pub struct TlsConnector<S, K = ConnectorKindAuto> { /* private fields */ }
Expand description
A connector which can be used to establish a connection to a server.
By default it will created in auto mode (TlsConnector::auto
),
which will perform the Tls handshake on the underlying stream,
only if the request requires a secure connection. You can instead use
[TlsConnector::secure_only
] to force the connector to always
establish a secure connection.
Implementations§
§impl<S, K> TlsConnector<S, K>
impl<S, K> TlsConnector<S, K>
pub const fn new(inner: S, kind: K) -> TlsConnector<S, K>
pub const fn new(inner: S, kind: K) -> TlsConnector<S, K>
Creates a new TlsConnector
.
pub fn with_connector_data(
self,
connector_data: TlsConnectorData,
) -> TlsConnector<S, K>
pub fn with_connector_data( self, connector_data: TlsConnectorData, ) -> TlsConnector<S, K>
Attach TlsConnectorData
to this TlsConnector
,
to be used instead of a globally shared [TlsConnectorData::default
].
NOTE: for a smooth interaction with HTTP you most likely do want to create tls connector data to at the very least define the ALPN’s correctly.
E.g. if you create an auto client, you want to make sure your ALPN can handle all.
It will be then also be the TlsConnector
that sets the request http version correctly.
pub fn maybe_with_connector_data(
self,
connector_data: Option<TlsConnectorData>,
) -> TlsConnector<S, K>
pub fn maybe_with_connector_data( self, connector_data: Option<TlsConnectorData>, ) -> TlsConnector<S, K>
Maybe attach TlsConnectorData
to this TlsConnector
,
to be used if Some
instead of a globally shared [TlsConnectorData::default
].
pub fn set_connector_data(
&mut self,
connector_data: TlsConnectorData,
) -> &mut TlsConnector<S, K>
pub fn set_connector_data( &mut self, connector_data: TlsConnectorData, ) -> &mut TlsConnector<S, K>
Attach TlsConnectorData
to this TlsConnector
,
to be used instead of a globally shared default client config.
§impl<S> TlsConnector<S>
impl<S> TlsConnector<S>
pub fn auto(inner: S) -> TlsConnector<S>
pub fn auto(inner: S) -> TlsConnector<S>
Creates a new TlsConnector
which will establish
a secure connection if the request demands it,
otherwise it will forward the pre-established inner connection.
§impl<S> TlsConnector<S, ConnectorKindSecure>
impl<S> TlsConnector<S, ConnectorKindSecure>
pub fn secure(inner: S) -> TlsConnector<S, ConnectorKindSecure>
pub fn secure(inner: S) -> TlsConnector<S, ConnectorKindSecure>
Creates a new TlsConnector
which will always
establish a secure connection regardless of the request it is for.
§impl<S> TlsConnector<S, ConnectorKindTunnel>
impl<S> TlsConnector<S, ConnectorKindTunnel>
pub fn tunnel(
inner: S,
host: Option<Host>,
) -> TlsConnector<S, ConnectorKindTunnel>
pub fn tunnel( inner: S, host: Option<Host>, ) -> TlsConnector<S, ConnectorKindTunnel>
Creates a new TlsConnector
which will establish
a secure connection if the request is to be tunneled.
Trait Implementations§
§impl<S, K> Clone for TlsConnector<S, K>
impl<S, K> Clone for TlsConnector<S, K>
§fn clone(&self) -> TlsConnector<S, K>
fn clone(&self) -> TlsConnector<S, K>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl<S, K> Debug for TlsConnector<S, K>
impl<S, K> Debug for TlsConnector<S, K>
§impl<S, Request> Service<Request> for TlsConnector<S>where
S: ConnectorService<Request>,
<S as ConnectorService<Request>>::Connection: Stream + Unpin,
<S as ConnectorService<Request>>::Error: Into<Box<dyn Error + Sync + Send>>,
Request: TryRefIntoTransportContext + Send + 'static,
<Request as TryRefIntoTransportContext>::Error: Into<Box<dyn Error + Sync + Send>> + Send + 'static,
impl<S, Request> Service<Request> for TlsConnector<S>where
S: ConnectorService<Request>,
<S as ConnectorService<Request>>::Connection: Stream + Unpin,
<S as ConnectorService<Request>>::Error: Into<Box<dyn Error + Sync + Send>>,
Request: TryRefIntoTransportContext + Send + 'static,
<Request as TryRefIntoTransportContext>::Error: Into<Box<dyn Error + Sync + Send>> + Send + 'static,
§type Response = EstablishedClientConnection<AutoTlsStream<<S as ConnectorService<Request>>::Connection>, Request>
type Response = EstablishedClientConnection<AutoTlsStream<<S as ConnectorService<Request>>::Connection>, Request>
§async fn serve(
&self,
ctx: Context,
req: Request,
) -> Result<<TlsConnector<S> as Service<Request>>::Response, <TlsConnector<S> as Service<Request>>::Error>
async fn serve( &self, ctx: Context, req: Request, ) -> Result<<TlsConnector<S> as Service<Request>>::Response, <TlsConnector<S> as Service<Request>>::Error>
§fn boxed(self) -> BoxService<Request, Self::Response, Self::Error>
fn boxed(self) -> BoxService<Request, Self::Response, Self::Error>
§impl<S, Request> Service<Request> for TlsConnector<S, ConnectorKindSecure>where
S: ConnectorService<Request>,
<S as ConnectorService<Request>>::Connection: Stream + Unpin,
<S as ConnectorService<Request>>::Error: Into<Box<dyn Error + Sync + Send>>,
Request: TryRefIntoTransportContext + Send + 'static,
<Request as TryRefIntoTransportContext>::Error: Into<Box<dyn Error + Sync + Send>> + Send + 'static,
impl<S, Request> Service<Request> for TlsConnector<S, ConnectorKindSecure>where
S: ConnectorService<Request>,
<S as ConnectorService<Request>>::Connection: Stream + Unpin,
<S as ConnectorService<Request>>::Error: Into<Box<dyn Error + Sync + Send>>,
Request: TryRefIntoTransportContext + Send + 'static,
<Request as TryRefIntoTransportContext>::Error: Into<Box<dyn Error + Sync + Send>> + Send + 'static,
§type Response = EstablishedClientConnection<TlsStream<<S as ConnectorService<Request>>::Connection>, Request>
type Response = EstablishedClientConnection<TlsStream<<S as ConnectorService<Request>>::Connection>, Request>
§async fn serve(
&self,
ctx: Context,
req: Request,
) -> Result<<TlsConnector<S, ConnectorKindSecure> as Service<Request>>::Response, <TlsConnector<S, ConnectorKindSecure> as Service<Request>>::Error>
async fn serve( &self, ctx: Context, req: Request, ) -> Result<<TlsConnector<S, ConnectorKindSecure> as Service<Request>>::Response, <TlsConnector<S, ConnectorKindSecure> as Service<Request>>::Error>
§fn boxed(self) -> BoxService<Request, Self::Response, Self::Error>
fn boxed(self) -> BoxService<Request, Self::Response, Self::Error>
§impl<S, Request> Service<Request> for TlsConnector<S, ConnectorKindTunnel>where
S: ConnectorService<Request>,
<S as ConnectorService<Request>>::Connection: Stream + Unpin,
<S as ConnectorService<Request>>::Error: Into<Box<dyn Error + Sync + Send>>,
Request: Send + 'static,
impl<S, Request> Service<Request> for TlsConnector<S, ConnectorKindTunnel>where
S: ConnectorService<Request>,
<S as ConnectorService<Request>>::Connection: Stream + Unpin,
<S as ConnectorService<Request>>::Error: Into<Box<dyn Error + Sync + Send>>,
Request: Send + 'static,
§type Response = EstablishedClientConnection<AutoTlsStream<<S as ConnectorService<Request>>::Connection>, Request>
type Response = EstablishedClientConnection<AutoTlsStream<<S as ConnectorService<Request>>::Connection>, Request>
§async fn serve(
&self,
ctx: Context,
req: Request,
) -> Result<<TlsConnector<S, ConnectorKindTunnel> as Service<Request>>::Response, <TlsConnector<S, ConnectorKindTunnel> as Service<Request>>::Error>
async fn serve( &self, ctx: Context, req: Request, ) -> Result<<TlsConnector<S, ConnectorKindTunnel> as Service<Request>>::Response, <TlsConnector<S, ConnectorKindTunnel> as Service<Request>>::Error>
§fn boxed(self) -> BoxService<Request, Self::Response, Self::Error>
fn boxed(self) -> BoxService<Request, Self::Response, Self::Error>
Auto Trait Implementations§
impl<S, K> Freeze for TlsConnector<S, K>
impl<S, K = ConnectorKindAuto> !RefUnwindSafe for TlsConnector<S, K>
impl<S, K> Send for TlsConnector<S, K>
impl<S, K> Sync for TlsConnector<S, K>
impl<S, K> Unpin for TlsConnector<S, K>
impl<S, K = ConnectorKindAuto> !UnwindSafe for TlsConnector<S, K>
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<S, Request, Connection> ConnectorService<Request> for S
impl<S, Request, Connection> ConnectorService<Request> for S
§type Connection = Connection
type Connection = Connection
ConnectorService
§fn connect(
&self,
ctx: Context,
req: Request,
) -> impl Future<Output = Result<EstablishedClientConnection<<S as ConnectorService<Request>>::Connection, Request>, <S as ConnectorService<Request>>::Error>> + Send
fn connect( &self, ctx: Context, req: Request, ) -> impl Future<Output = Result<EstablishedClientConnection<<S as ConnectorService<Request>>::Connection, Request>, <S as ConnectorService<Request>>::Error>> + Send
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<S, Body> HttpClientExt for S
impl<S, Body> HttpClientExt for S
§type ExecuteResponse = Response<Body>
type ExecuteResponse = Response<Body>
execute
method.§type ExecuteError = <S as Service<Request<Body>>>::Error
type ExecuteError = <S as Service<Request<Body>>>::Error
execute
method.§fn get(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn get( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
GET
request to a URL. Read more§fn post(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn post( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
POST
request to a URL. Read more§fn put(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn put( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
PUT
request to a URL. Read more§fn patch(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn patch( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
PATCH
request to a URL. Read more§fn delete(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn delete( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
DELETE
request to a URL. Read more§fn head(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn head( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
HEAD
request to a URL. Read more§fn connect(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn connect( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
CONNECT
request to a URL. Read more§fn request(
&self,
method: Method,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn request( &self, method: Method, url: impl IntoUrl, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
§fn build_from_request<RequestBody>(
&self,
request: Request<RequestBody>,
) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
fn build_from_request<RequestBody>( &self, request: Request<RequestBody>, ) -> RequestBuilder<'_, S, <S as HttpClientExt>::ExecuteResponse>
§fn execute(
&self,
ctx: Context,
request: Request<Body>,
) -> impl Future<Output = Result<<S as HttpClientExt>::ExecuteResponse, <S as HttpClientExt>::ExecuteError>>
fn execute( &self, ctx: Context, request: Request<Body>, ) -> impl Future<Output = Result<<S as HttpClientExt>::ExecuteResponse, <S as HttpClientExt>::ExecuteError>>
Request
. Read more§impl<S, Body> HttpClientWebSocketExt<Body> for S
impl<S, Body> HttpClientWebSocketExt<Body> for S
§fn websocket(
&self,
url: impl IntoUrl,
) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
fn websocket( &self, url: impl IntoUrl, ) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
WebSocketRequestBuilder
] to be used to establish a WebSocket connection over http/1.1.§fn websocket_h2(
&self,
url: impl IntoUrl,
) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
fn websocket_h2( &self, url: impl IntoUrl, ) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
WebSocketRequestBuilder
to be used to establish a WebSocket connection over h2.§fn websocket_with_request<RequestBody>(
&self,
req: Request<RequestBody>,
) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
fn websocket_with_request<RequestBody>( &self, req: Request<RequestBody>, ) -> WebSocketRequestBuilder<WithService<'_, S, Body>>
WebSocketRequestBuilder
starting from the given request. Read more§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<S, R> IntoEndpointService<(R,)> for Swhere
S: Service<Request<Body>, Response = R, Error = Infallible>,
R: IntoResponse + Send + Sync + 'static,
impl<S, R> IntoEndpointService<(R,)> for Swhere
S: Service<Request<Body>, Response = R, Error = Infallible>,
R: IntoResponse + Send + Sync + 'static,
§fn into_endpoint_service(
self,
) -> impl Service<Request<Body>, Response = Response<Body>, Error = Infallible>
fn into_endpoint_service( self, ) -> impl Service<Request<Body>, Response = Response<Body>, Error = Infallible>
rama_core::Service
.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy
that returns Action::Follow
only if self
and other
return
Action::Follow
. Read more