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,
Request: TryRefIntoTransportContext + ExtensionsRef + 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,
Request: TryRefIntoTransportContext + ExtensionsRef + 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,
req: Request,
) -> Result<<TlsConnector<S> as Service<Request>>::Response, <TlsConnector<S> as Service<Request>>::Error>
async fn serve( &self, 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,
Request: TryRefIntoTransportContext + Send + ExtensionsRef + '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,
Request: TryRefIntoTransportContext + Send + ExtensionsRef + '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,
req: Request,
) -> Result<<TlsConnector<S, ConnectorKindSecure> as Service<Request>>::Response, <TlsConnector<S, ConnectorKindSecure> as Service<Request>>::Error>
async fn serve( &self, 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,
Request: Send + ExtensionsRef + 'static,
impl<S, Request> Service<Request> for TlsConnector<S, ConnectorKindTunnel>where
S: ConnectorService<Request>,
<S as ConnectorService<Request>>::Connection: Stream + Unpin,
Request: Send + ExtensionsRef + '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,
req: Request,
) -> Result<<TlsConnector<S, ConnectorKindTunnel> as Service<Request>>::Response, <TlsConnector<S, ConnectorKindTunnel> as Service<Request>>::Error>
async fn serve( &self, 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,
req: Request,
) -> impl Future<Output = Result<EstablishedClientConnection<<S as ConnectorService<Request>>::Connection, Request>, <S as ConnectorService<Request>>::Error>> + Send
fn connect( &self, 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>>::Error
type ExecuteError = <S as Service<Request>>::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,
request: Request,
) -> impl Future<Output = Result<<S as HttpClientExt>::ExecuteResponse, <S as HttpClientExt>::ExecuteError>>
fn execute( &self, request: Request, ) -> 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, Response = R, Error = Infallible>,
R: IntoResponse + Send + Sync + 'static,
impl<S, R> IntoEndpointService<(R,)> for Swhere
S: Service<Request, Response = R, Error = Infallible>,
R: IntoResponse + Send + Sync + 'static,
§fn into_endpoint_service(
self,
) -> impl Service<Request, Response = Response, Error = Infallible>
fn into_endpoint_service( self, ) -> impl Service<Request, Response = Response, Error = Infallible>
rama_core::Service.§impl<S, R, State> IntoEndpointServiceWithState<(R,), State> for Swhere
S: Service<Request, Response = R, Error = Infallible>,
R: IntoResponse + Send + Sync + 'static,
impl<S, R, State> IntoEndpointServiceWithState<(R,), State> for Swhere
S: Service<Request, Response = R, Error = Infallible>,
R: IntoResponse + Send + Sync + 'static,
§fn into_endpoint_service_with_state(
self,
_state: State,
) -> impl Service<Request, Response = Response, Error = Infallible>
fn into_endpoint_service_with_state( self, _state: State, ) -> impl Service<Request, Response = Response, Error = Infallible>
rama_core::Service with state.§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