Struct rama::tls::boring::client::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 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 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, State, Request> Service<State, Request> for TlsConnector<S>where
S: ConnectorService<State, Request>,
<S as ConnectorService<State, Request>>::Connection: Stream + Unpin,
<S as ConnectorService<State, Request>>::Error: Into<Box<dyn Error + Sync + Send>>,
State: Clone + Send + Sync + 'static,
Request: TryRefIntoTransportContext<State> + Send + 'static,
<Request as TryRefIntoTransportContext<State>>::Error: Into<Box<dyn Error + Sync + Send>> + Send + Sync + 'static,
impl<S, State, Request> Service<State, Request> for TlsConnector<S>where
S: ConnectorService<State, Request>,
<S as ConnectorService<State, Request>>::Connection: Stream + Unpin,
<S as ConnectorService<State, Request>>::Error: Into<Box<dyn Error + Sync + Send>>,
State: Clone + Send + Sync + 'static,
Request: TryRefIntoTransportContext<State> + Send + 'static,
<Request as TryRefIntoTransportContext<State>>::Error: Into<Box<dyn Error + Sync + Send>> + Send + Sync + 'static,
this way we do not need a hacky macro… however is there a way to do this without needing to hacK?!?!
§type Response = EstablishedClientConnection<AutoTlsStream<<S as ConnectorService<State, Request>>::Connection>, State, Request>
type Response = EstablishedClientConnection<AutoTlsStream<<S as ConnectorService<State, Request>>::Connection>, State, Request>
§async fn serve(
&self,
ctx: Context<State>,
req: Request,
) -> Result<<TlsConnector<S> as Service<State, Request>>::Response, <TlsConnector<S> as Service<State, Request>>::Error>
async fn serve( &self, ctx: Context<State>, req: Request, ) -> Result<<TlsConnector<S> as Service<State, Request>>::Response, <TlsConnector<S> as Service<State, Request>>::Error>
§fn boxed(self) -> BoxService<S, Request, Self::Response, Self::Error>
fn boxed(self) -> BoxService<S, Request, Self::Response, Self::Error>
§impl<S, State, Request> Service<State, Request> for TlsConnector<S, ConnectorKindSecure>where
S: ConnectorService<State, Request>,
<S as ConnectorService<State, Request>>::Connection: Stream + Unpin,
<S as ConnectorService<State, Request>>::Error: Into<Box<dyn Error + Sync + Send>>,
State: Clone + Send + Sync + 'static,
Request: TryRefIntoTransportContext<State> + Send + 'static,
<Request as TryRefIntoTransportContext<State>>::Error: Into<Box<dyn Error + Sync + Send>> + Send + Sync + 'static,
impl<S, State, Request> Service<State, Request> for TlsConnector<S, ConnectorKindSecure>where
S: ConnectorService<State, Request>,
<S as ConnectorService<State, Request>>::Connection: Stream + Unpin,
<S as ConnectorService<State, Request>>::Error: Into<Box<dyn Error + Sync + Send>>,
State: Clone + Send + Sync + 'static,
Request: TryRefIntoTransportContext<State> + Send + 'static,
<Request as TryRefIntoTransportContext<State>>::Error: Into<Box<dyn Error + Sync + Send>> + Send + Sync + 'static,
§type Response = EstablishedClientConnection<SslStream<<S as ConnectorService<State, Request>>::Connection>, State, Request>
type Response = EstablishedClientConnection<SslStream<<S as ConnectorService<State, Request>>::Connection>, State, Request>
§async fn serve(
&self,
ctx: Context<State>,
req: Request,
) -> Result<<TlsConnector<S, ConnectorKindSecure> as Service<State, Request>>::Response, <TlsConnector<S, ConnectorKindSecure> as Service<State, Request>>::Error>
async fn serve( &self, ctx: Context<State>, req: Request, ) -> Result<<TlsConnector<S, ConnectorKindSecure> as Service<State, Request>>::Response, <TlsConnector<S, ConnectorKindSecure> as Service<State, Request>>::Error>
§fn boxed(self) -> BoxService<S, Request, Self::Response, Self::Error>
fn boxed(self) -> BoxService<S, Request, Self::Response, Self::Error>
§impl<S, State, Request> Service<State, Request> for TlsConnector<S, ConnectorKindTunnel>where
S: ConnectorService<State, Request>,
<S as ConnectorService<State, Request>>::Connection: Stream + Unpin,
<S as ConnectorService<State, Request>>::Error: Into<Box<dyn Error + Sync + Send>>,
State: Clone + Send + Sync + 'static,
Request: Send + 'static,
impl<S, State, Request> Service<State, Request> for TlsConnector<S, ConnectorKindTunnel>where
S: ConnectorService<State, Request>,
<S as ConnectorService<State, Request>>::Connection: Stream + Unpin,
<S as ConnectorService<State, Request>>::Error: Into<Box<dyn Error + Sync + Send>>,
State: Clone + Send + Sync + 'static,
Request: Send + 'static,
§type Response = EstablishedClientConnection<AutoTlsStream<<S as ConnectorService<State, Request>>::Connection>, State, Request>
type Response = EstablishedClientConnection<AutoTlsStream<<S as ConnectorService<State, Request>>::Connection>, State, Request>
§async fn serve(
&self,
ctx: Context<State>,
req: Request,
) -> Result<<TlsConnector<S, ConnectorKindTunnel> as Service<State, Request>>::Response, <TlsConnector<S, ConnectorKindTunnel> as Service<State, Request>>::Error>
async fn serve( &self, ctx: Context<State>, req: Request, ) -> Result<<TlsConnector<S, ConnectorKindTunnel> as Service<State, Request>>::Response, <TlsConnector<S, ConnectorKindTunnel> as Service<State, Request>>::Error>
§fn boxed(self) -> BoxService<S, Request, Self::Response, Self::Error>
fn boxed(self) -> BoxService<S, 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§
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,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<S, State, Request, Connection> ConnectorService<State, Request> for S
impl<S, State, Request, Connection> ConnectorService<State, Request> for S
§type Connection = Connection
type Connection = Connection
ConnectorService
§type Error = <S as Service<State, Request>>::Error
type Error = <S as Service<State, Request>>::Error
§fn connect(
&self,
ctx: Context<State>,
req: Request,
) -> impl Future<Output = Result<EstablishedClientConnection<<S as ConnectorService<State, Request>>::Connection, State, Request>, <S as ConnectorService<State, Request>>::Error>> + Send
fn connect( &self, ctx: Context<State>, req: Request, ) -> impl Future<Output = Result<EstablishedClientConnection<<S as ConnectorService<State, Request>>::Connection, State, Request>, <S as ConnectorService<State, Request>>::Error>> + Send
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§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<State, S, Body> HttpClientExt<State> for S
impl<State, S, Body> HttpClientExt<State> for S
§type ExecuteResponse = Response<Body>
type ExecuteResponse = Response<Body>
execute
method.§type ExecuteError = <S as Service<State, Request<Body>>>::Error
type ExecuteError = <S as Service<State, Request<Body>>>::Error
execute
method.§fn get(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, State, <S as HttpClientExt<State>>::ExecuteResponse>
fn get( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, State, <S as HttpClientExt<State>>::ExecuteResponse>
GET
request to a URL. Read more§fn post(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, State, <S as HttpClientExt<State>>::ExecuteResponse>
fn post( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, State, <S as HttpClientExt<State>>::ExecuteResponse>
POST
request to a URL. Read more§fn put(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, State, <S as HttpClientExt<State>>::ExecuteResponse>
fn put( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, State, <S as HttpClientExt<State>>::ExecuteResponse>
PUT
request to a URL. Read more§fn patch(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, State, <S as HttpClientExt<State>>::ExecuteResponse>
fn patch( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, State, <S as HttpClientExt<State>>::ExecuteResponse>
PATCH
request to a URL. Read more§fn delete(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, State, <S as HttpClientExt<State>>::ExecuteResponse>
fn delete( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, State, <S as HttpClientExt<State>>::ExecuteResponse>
DELETE
request to a URL. Read more§fn head(
&self,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, State, <S as HttpClientExt<State>>::ExecuteResponse>
fn head( &self, url: impl IntoUrl, ) -> RequestBuilder<'_, S, State, <S as HttpClientExt<State>>::ExecuteResponse>
HEAD
request to a URL. Read more§fn request(
&self,
method: Method,
url: impl IntoUrl,
) -> RequestBuilder<'_, S, State, <S as HttpClientExt<State>>::ExecuteResponse>
fn request( &self, method: Method, url: impl IntoUrl, ) -> RequestBuilder<'_, S, State, <S as HttpClientExt<State>>::ExecuteResponse>
§fn execute(
&self,
ctx: Context<State>,
request: Request<Body>,
) -> impl Future<Output = Result<<S as HttpClientExt<State>>::ExecuteResponse, <S as HttpClientExt<State>>::ExecuteError>>
fn execute( &self, ctx: Context<State>, request: Request<Body>, ) -> impl Future<Output = Result<<S as HttpClientExt<State>>::ExecuteResponse, <S as HttpClientExt<State>>::ExecuteError>>
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<State, S, R> IntoEndpointService<State, (State, R)> for Swhere
State: Clone + Send + Sync + 'static,
S: Service<State, Request<Body>, Response = R, Error = Infallible>,
R: IntoResponse + Send + Sync + 'static,
impl<State, S, R> IntoEndpointService<State, (State, R)> for Swhere
State: Clone + Send + Sync + 'static,
S: Service<State, Request<Body>, Response = R, Error = Infallible>,
R: IntoResponse + Send + Sync + 'static,
§fn into_endpoint_service(
self,
) -> impl Service<State, Request<Body>, Response = Response<Body>, Error = Infallible>
fn into_endpoint_service( self, ) -> impl Service<State, Request<Body>, Response = Response<Body>, Error = Infallible>
rama_core::Service
.§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§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<S, P, B, E>(self, other: P) -> And<T, P>
fn and<S, P, B, E>(self, other: P) -> And<T, P>
Policy
that returns Action::Follow
only if self
and other
return
Action::Follow
. Read more§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.