Skip to main content

HttpRpcProtocol

Struct HttpRpcProtocol 

Source
pub struct HttpRpcProtocol<C> { /* private fields */ }
Expand description

An HTTP protocol for RPC-style APIs that put everything in the body.

This protocol ignores HTTP binding traits and serializes the entire input into the request body using the provided codec. Used by protocols like awsJson1_0, awsJson1_1, and rpcv2Cbor.

§Type parameters

  • C — the payload codec (ex: JsonCodec, CborCodec)

Implementations§

Source§

impl<C: Codec> HttpRpcProtocol<C>

Source

pub fn new( protocol_id: ShapeId<'static>, codec: C, content_type: &'static str, ) -> Self

Creates a new HTTP RPC protocol.

Source

pub fn codec(&self) -> &C

Returns a reference to the body codec. Used by wrapper protocols that need to read the codec’s settings before rebuilding it via Self::with_codec.

Source

pub fn content_type(&self) -> &'static str

Returns the Content-Type string this protocol stamps onto the outgoing request. Used by wrapper protocols that rebuild the inner HttpRpcProtocol when reconfiguring the codec.

Source

pub fn with_codec(self, codec: C) -> Self

Replaces the body codec, returning a new protocol instance with all other fields preserved. Used by wrapper protocols (e.g. AWS JSON RPC) that need to swap in a reconfigured codec.

Trait Implementations§

Source§

impl<C> ClientProtocolInner for HttpRpcProtocol<C>
where C: Codec + Send + Sync + Debug + 'static, for<'a> C::Deserializer<'a>: ShapeDeserializer,

Source§

type Request = Request

The protocol’s request message type (e.g., http::Request).
Source§

type Response = Response

The protocol’s response message type (e.g., http::Response).
Source§

fn protocol_id(&self) -> &ShapeId<'static>

Returns the Smithy shape ID of this protocol.
Source§

fn serialize_request( &self, input: &dyn SerializableStruct, input_schema: &Schema<'_>, endpoint: &str, cfg: &ConfigBag, ) -> Result<Request, SerdeError>

Serializes an operation input into a request message. Read more
Source§

fn deserialize_response<'a>( &self, response: &'a Response, _output_schema: &Schema<'_>, _cfg: &'a ConfigBag, ) -> Result<Box<dyn ShapeDeserializer + 'a>, SerdeError>

Deserializes a response message, returning a boxed ShapeDeserializer that supplies every member of output_schema this protocol carries in the response. Read more
Source§

fn payload_codec(&self) -> Option<&dyn DynCodec>

Returns the codec used for payload (de)serialization, if any. Read more
Source§

fn update_endpoint( &self, request: &mut Request, endpoint: &Endpoint, cfg: &ConfigBag, ) -> Result<(), SerdeError>

Updates a previously serialized request with a resolved endpoint. Read more
Source§

fn parse_error_metadata( &self, response: &Self::Response, cfg: &ConfigBag, ) -> Result<ErrorMetadataBuilder, SerdeError>

Extracts canonical error metadata (code, message, request id) from a response’s wire envelope. Read more
Source§

fn deserialize_error_response<'a>( &self, response: &'a Self::Response, cfg: &'a ConfigBag, ) -> Result<Box<dyn ShapeDeserializer + 'a>, SerdeError>

Returns a ShapeDeserializer positioned at the body of an error response — inside the protocol’s error envelope, where applicable. Read more
Source§

fn event_stream_media_type(&self) -> Option<&str>

The media type used to label a structured event-stream payload, if this protocol supports event streams — for example application/cbor or application/json. Read more
Source§

fn parse_event_stream_error_metadata( &self, payload: &[u8], ) -> Result<ErrorMetadataBuilder, SerdeError>

Extracts canonical error metadata from the payload of an event-stream exception frame. Read more
Source§

impl<C: Debug> Debug for HttpRpcProtocol<C>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<C> Freeze for HttpRpcProtocol<C>
where C: Freeze,

§

impl<C> RefUnwindSafe for HttpRpcProtocol<C>
where C: RefUnwindSafe,

§

impl<C> Send for HttpRpcProtocol<C>
where C: Send,

§

impl<C> Sync for HttpRpcProtocol<C>
where C: Sync,

§

impl<C> Unpin for HttpRpcProtocol<C>
where C: Unpin,

§

impl<C> UnsafeUnpin for HttpRpcProtocol<C>
where C: UnsafeUnpin,

§

impl<C> UnwindSafe for HttpRpcProtocol<C>
where C: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<P> ClientProtocol<<P as ClientProtocolInner>::Request, <P as ClientProtocolInner>::Response> for P

Source§

fn protocol_id(&self) -> &ShapeId<'static>

Returns the Smithy shape ID of this protocol.
Source§

fn serialize_request( &self, input: &dyn SerializableStruct, input_schema: &Schema<'_>, endpoint: &str, cfg: &ConfigBag, ) -> Result<<P as ClientProtocolInner>::Request, SerdeError>

Serializes an operation input into a request message. Read more
Source§

fn deserialize_response<'a>( &self, response: &'a <P as ClientProtocolInner>::Response, output_schema: &Schema<'_>, cfg: &'a ConfigBag, ) -> Result<Box<dyn ShapeDeserializer + 'a>, SerdeError>

Deserializes a response message, returning a boxed ShapeDeserializer.
Source§

fn parse_error_metadata( &self, response: &<P as ClientProtocolInner>::Response, cfg: &ConfigBag, ) -> Result<Builder, SerdeError>

Extracts canonical error metadata from a response. Read more
Source§

fn deserialize_error_response<'a>( &self, response: &'a <P as ClientProtocolInner>::Response, cfg: &'a ConfigBag, ) -> Result<Box<dyn ShapeDeserializer + 'a>, SerdeError>

Returns a ShapeDeserializer positioned at the body of an error response — inside the protocol’s error envelope, where applicable. Read more
Source§

fn update_endpoint( &self, request: &mut <P as ClientProtocolInner>::Request, endpoint: &Endpoint, cfg: &ConfigBag, ) -> Result<(), SerdeError>

Updates a previously serialized request with a resolved endpoint.
Source§

fn payload_codec(&self) -> Option<&dyn DynCodec>

Returns the codec used for payload (de)serialization, if any.
Source§

fn event_stream_media_type(&self) -> Option<&str>

The media type used to label a structured event-stream payload, if any. Read more
Source§

fn parse_event_stream_error_metadata( &self, payload: &[u8], ) -> Result<Builder, SerdeError>

Extracts canonical error metadata from an event-stream exception frame’s payload. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more