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 fn maybe_with_connector_data(
self,
connector_data: Option<Arc<TlsConnectorDataBuilder>>,
) -> TlsConnector<S, K>
pub fn maybe_with_connector_data( self, connector_data: Option<Arc<TlsConnectorDataBuilder>>, ) -> TlsConnector<S, K>
Set base TlsConnectorDataBuilder
that will be used for this connector
This builder will be chained with the TlsConnectorDataBuilder
found in
the context in this order: BaseBuilder -> CtxBuilder
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_set_connector_data(
&mut self,
connector_data: Option<Arc<TlsConnectorDataBuilder>>,
) -> &mut TlsConnector<S, K>
pub fn maybe_set_connector_data( &mut self, connector_data: Option<Arc<TlsConnectorDataBuilder>>, ) -> &mut TlsConnector<S, K>
Set base TlsConnectorDataBuilder
that will be used for this connector
This builder will be chained with the TlsConnectorDataBuilder
found in
the context in this order: BaseBuilder -> CtxBuilder
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 with_connector_data(
self,
connector_data: Arc<TlsConnectorDataBuilder>,
) -> TlsConnector<S, K>
pub fn with_connector_data( self, connector_data: Arc<TlsConnectorDataBuilder>, ) -> TlsConnector<S, K>
Set base TlsConnectorDataBuilder
that will be used for this connector
This builder will be chained with the TlsConnectorDataBuilder
found in
the context in this order: BaseBuilder -> CtxBuilder
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 set_connector_data(
&mut self,
connector_data: Arc<TlsConnectorDataBuilder>,
) -> &mut TlsConnector<S, K>
pub fn set_connector_data( &mut self, connector_data: Arc<TlsConnectorDataBuilder>, ) -> &mut TlsConnector<S, K>
Set base TlsConnectorDataBuilder
that will be used for this connector
This builder will be chained with the TlsConnectorDataBuilder
found in
the context in this order: BaseBuilder -> CtxBuilder
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 without_connector_data(self) -> TlsConnector<S, K>
pub fn without_connector_data(self) -> TlsConnector<S, K>
Set base TlsConnectorDataBuilder
that will be used for this connector
This builder will be chained with the TlsConnectorDataBuilder
found in
the context in this order: BaseBuilder -> CtxBuilder
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 unset_connector_data(&mut self) -> &mut TlsConnector<S, K>
pub fn unset_connector_data(&mut self) -> &mut TlsConnector<S, K>
Set base TlsConnectorDataBuilder
that will be used for this connector
This builder will be chained with the TlsConnectorDataBuilder
found in
the context in this order: BaseBuilder -> CtxBuilder
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.
§impl<S> TlsConnector<S>
impl<S> TlsConnector<S>
pub const fn auto(inner: S) -> TlsConnector<S>
pub const 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 const fn secure(inner: S) -> TlsConnector<S, ConnectorKindSecure>
pub const 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 const fn tunnel(
inner: S,
host: Option<Host>,
) -> TlsConnector<S, ConnectorKindTunnel>
pub const 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> RefUnwindSafe for TlsConnector<S, K>where
S: RefUnwindSafe,
K: RefUnwindSafe,
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> UnwindSafe for TlsConnector<S, K>where
S: UnwindSafe,
K: UnwindSafe,
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