in crates/amzn-qdeveloper-streaming-client/src/event_stream_serde.rs [147:372]
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() {
"messageMetadataEvent" => {
let parsed =
crate::protocol_serde::shape_message_metadata_event::de_message_metadata_event_payload(
&message.payload()[..],
)
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!(
"failed to unmarshall MessageMetadataEvent: {}",
err
))
})?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::ChatResponseStream::MessageMetadataEvent(parsed),
))
},
"assistantResponseEvent" => {
let parsed =
crate::protocol_serde::shape_assistant_response_event::de_assistant_response_event_payload(
&message.payload()[..],
)
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!(
"failed to unmarshall AssistantResponseEvent: {}",
err
))
})?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::ChatResponseStream::AssistantResponseEvent(parsed),
))
},
"dryRunSucceedEvent" => Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::ChatResponseStream::DryRunSucceedEvent(
crate::types::DryRunSucceedEvent::builder().build(),
),
)),
"codeReferenceEvent" => {
let parsed = crate::protocol_serde::shape_code_reference_event::de_code_reference_event_payload(
&message.payload()[..],
)
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!(
"failed to unmarshall CodeReferenceEvent: {}",
err
))
})?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::ChatResponseStream::CodeReferenceEvent(parsed),
))
},
"supplementaryWebLinksEvent" => {
let parsed =
crate::protocol_serde::shape_supplementary_web_links_event::de_supplementary_web_links_event_payload(&message.payload()[..])
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!(
"failed to unmarshall SupplementaryWebLinksEvent: {}",
err
))
})?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::ChatResponseStream::SupplementaryWebLinksEvent(parsed),
))
},
"followupPromptEvent" => {
let parsed = crate::protocol_serde::shape_followup_prompt_event::de_followup_prompt_event_payload(
&message.payload()[..],
)
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!(
"failed to unmarshall FollowupPromptEvent: {}",
err
))
})?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::ChatResponseStream::FollowupPromptEvent(parsed),
))
},
"codeEvent" => {
let parsed = crate::protocol_serde::shape_code_event::de_code_event_payload(&message.payload()[..])
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!(
"failed to unmarshall CodeEvent: {}",
err
))
})?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::ChatResponseStream::CodeEvent(parsed),
))
},
"intentsEvent" => {
let parsed =
crate::protocol_serde::shape_intents_event::de_intents_event_payload(&message.payload()[..])
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!(
"failed to unmarshall IntentsEvent: {}",
err
))
})?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::ChatResponseStream::IntentsEvent(parsed),
))
},
"interactionComponentsEvent" => {
let parsed =
crate::protocol_serde::shape_interaction_components_event::de_interaction_components_event_payload(&message.payload()[..])
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!(
"failed to unmarshall InteractionComponentsEvent: {}",
err
))
})?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::ChatResponseStream::InteractionComponentsEvent(parsed),
))
},
"toolUseEvent" => {
let parsed =
crate::protocol_serde::shape_tool_use_event::de_tool_use_event_payload(&message.payload()[..])
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!(
"failed to unmarshall ToolUseEvent: {}",
err
))
})?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::ChatResponseStream::ToolUseEvent(parsed),
))
},
"toolResultEvent" => {
let parsed = crate::protocol_serde::shape_tool_result_event::de_tool_result_event_payload(
&message.payload()[..],
)
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!(
"failed to unmarshall ToolResultEvent: {}",
err
))
})?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::ChatResponseStream::ToolResultEvent(parsed),
))
},
"citationEvent" => {
let parsed =
crate::protocol_serde::shape_citation_event::de_citation_event_payload(&message.payload()[..])
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!(
"failed to unmarshall CitationEvent: {}",
err
))
})?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::ChatResponseStream::CitationEvent(parsed),
))
},
"invalidStateEvent" => {
let parsed = crate::protocol_serde::shape_invalid_state_event::de_invalid_state_event_payload(
&message.payload()[..],
)
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!(
"failed to unmarshall InvalidStateEvent: {}",
err
))
})?;
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::ChatResponseStream::InvalidStateEvent(parsed),
))
},
_unknown_variant => Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Event(
crate::types::ChatResponseStream::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::ChatResponseStreamError::unhandled(err),
));
},
};
if response_headers.smithy_type.as_str() == "error" {
let mut builder = crate::types::error::builders::InternalServerErrorBuilder::default();
builder = crate::protocol_serde::shape_internal_server_error::de_internal_server_error_json_err(
&message.payload()[..],
builder,
)
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!(
"failed to unmarshall error: {}",
err
))
})?;
builder.set_meta(Some(generic));
return Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Error(
crate::types::error::ChatResponseStreamError::InternalServerError(
crate::serde_util::internal_server_error_correct_errors(builder)
.build()
.map_err(|err| {
::aws_smithy_eventstream::error::Error::unmarshalling(format!("{}", err))
})?,
),
));
}
Ok(::aws_smithy_eventstream::frame::UnmarshalledMessage::Error(
crate::types::error::ChatResponseStreamError::generic(generic),
))
},
value => {
return Err(::aws_smithy_eventstream::error::Error::unmarshalling(format!(
"unrecognized :message-type: {}",
value
)));
},
}
}