#[non_exhaustive]
#[derive(Debug)]
pub struct SendMessageEventsUnmarshaller;
impl SendMessageEventsUnmarshaller {
pub fn new() -> Self {
SendMessageEventsUnmarshaller
}
}
impl ::aws_smithy_eventstream::frame::UnmarshallMessage for SendMessageEventsUnmarshaller {
type Output = crate::types::SendMessageEvents;
type Error = crate::types::error::SendMessageEventsError;
fn unmarshall(
&self,
message: &::aws_smithy_types::event_stream::Message,
) -> std::result::Result<::aws_smithy_eventstream::frame::UnmarshalledMessage<Self::Output, Self::Error>, ::aws_smithy_eventstream::error::Error>
{
let response_headers = ::aws_smithy_eventstream::smithy::parse_response_headers(message)?;
match response_headers.message_type.as_str() {
"event" => match response_headers.smithy_type.as_str() {
"responseCreated" => {
let parsed = crate::protocol_serde::shape_send_message_response_created_event::de_send_message_response_created_event_payload(
&message.payload()[..],
)
.map_err(|err| ::aws_smithy_eventstream::error::Error::unmarshalling(format!("failed to unmarshall ResponseCreated: {err}")))?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::SendMessageEvents::ResponseCreated(parsed),
))
}
"responseInProgress" => {
let parsed =
crate::protocol_serde::shape_send_message_response_in_progress_event::de_send_message_response_in_progress_event_payload(
&message.payload()[..],
)
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!("failed to unmarshall ResponseInProgress: {err}"))
})?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::SendMessageEvents::ResponseInProgress(parsed),
))
}
"responseCompleted" => {
let parsed =
crate::protocol_serde::shape_send_message_response_completed_event::de_send_message_response_completed_event_payload(
&message.payload()[..],
)
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!("failed to unmarshall ResponseCompleted: {err}"))
})?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::SendMessageEvents::ResponseCompleted(parsed),
))
}
"responseFailed" => {
let parsed = crate::protocol_serde::shape_send_message_response_failed_event::de_send_message_response_failed_event_payload(
&message.payload()[..],
)
.map_err(|err| ::aws_smithy_eventstream::error::Error::unmarshalling(format!("failed to unmarshall ResponseFailed: {err}")))?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::SendMessageEvents::ResponseFailed(parsed),
))
}
"summary" => {
let parsed =
crate::protocol_serde::shape_send_message_summary_event::de_send_message_summary_event_payload(&message.payload()[..])
.map_err(|err| ::aws_smithy_eventstream::error::Error::unmarshalling(format!("failed to unmarshall Summary: {err}")))?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::SendMessageEvents::Summary(parsed),
))
}
"heartbeat" => Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::SendMessageEvents::Heartbeat(crate::types::SendMessageHeartbeatEvent::builder().build()),
)),
"contentBlockStart" => {
let parsed =
crate::protocol_serde::shape_send_message_content_block_start_event::de_send_message_content_block_start_event_payload(
&message.payload()[..],
)
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!("failed to unmarshall ContentBlockStart: {err}"))
})?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::SendMessageEvents::ContentBlockStart(parsed),
))
}
"contentBlockDelta" => {
let parsed =
crate::protocol_serde::shape_send_message_content_block_delta_event::de_send_message_content_block_delta_event_payload(
&message.payload()[..],
)
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!("failed to unmarshall ContentBlockDelta: {err}"))
})?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::SendMessageEvents::ContentBlockDelta(parsed),
))
}
"contentBlockStop" => {
let parsed =
crate::protocol_serde::shape_send_message_content_block_stop_event::de_send_message_content_block_stop_event_payload(
&message.payload()[..],
)
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!("failed to unmarshall ContentBlockStop: {err}"))
})?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::SendMessageEvents::ContentBlockStop(parsed),
))
}
_unknown_variant => Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::SendMessageEvents::Unknown,
)),
},
"exception" => {
let generic = match crate::protocol_serde::parse_event_stream_error_metadata(message.payload()) {
Ok(builder) => builder.build(),
Err(err) => {
return Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Error(
crate::types::error::SendMessageEventsError::unhandled(err),
))
}
};
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Error(
crate::types::error::SendMessageEventsError::generic(generic),
))
}
value => {
return Err(::aws_smithy_eventstream::error::Error::unmarshalling(format!(
"unrecognized :message-type: {value}"
)));
}
}
}
}