fire_http_api/stream/
util.rs

1use fire::extractor::ExtractorError;
2
3use crate::error::Error;
4use crate::ApiError;
5
6use super::error::UnrecoverableError;
7use super::message::MessageData;
8use super::streamer::RawStreamer;
9use super::{Stream, Streamer};
10
11pub fn deserialize_req<S: Stream>(
12	msg: MessageData,
13) -> Result<S, UnrecoverableError> {
14	msg.deserialize()
15		.map_err(|e| format!("failed to deserialize stream request {e}").into())
16}
17
18#[inline]
19pub fn transform_streamer<S: Stream>(
20	streamer: RawStreamer,
21) -> Streamer<S::Message> {
22	streamer.assign_message()
23}
24
25pub fn extraction_error<S: Stream>(e: impl ExtractorError) -> S::Error {
26	S::Error::from_error(Error::ExtractionError(e.into_std()))
27}
28
29pub fn error_to_data<S: Stream>(
30	r: Result<(), S::Error>,
31) -> Result<MessageData, UnrecoverableError> {
32	match r {
33		Ok(_) => Ok(MessageData::null()),
34		Err(e) => {
35			// try to convert the error into a message
36			MessageData::serialize(e).map_err(|e| e.to_string().into())
37		}
38	}
39}