use crate::model::{ApiFormat, StreamState, TransformError};
pub fn transform_stream(
upstream_events: &[u8],
source: ApiFormat,
state: &mut StreamState,
) -> Result<Vec<u8>, TransformError> {
if upstream_events.len() > crate::model::MAX_SSE_STREAM_BYTES {
return Err(TransformError::BufferLimitExceeded(format!(
"SSE stream size {} bytes exceeds {} byte limit",
upstream_events.len(),
crate::model::MAX_SSE_STREAM_BYTES
)));
}
let events = crate::stream::transform_stream_events(upstream_events, source, state)?;
Ok(crate::stream::events_to_sse(&events))
}
pub fn transform_stream_to_openai(
upstream_events: &[u8],
source: ApiFormat,
state: &mut StreamState,
) -> Result<Vec<u8>, TransformError> {
if upstream_events.len() > crate::model::MAX_SSE_STREAM_BYTES {
return Err(TransformError::BufferLimitExceeded(format!(
"SSE stream size {} bytes exceeds {} byte limit",
upstream_events.len(),
crate::model::MAX_SSE_STREAM_BYTES
)));
}
crate::stream::transform_stream_to_openai_sse(upstream_events, source, state)
}
pub fn transform_stream_to_openai_responses(
upstream_events: &[u8],
source: ApiFormat,
state: &mut StreamState,
) -> Result<Vec<u8>, TransformError> {
if upstream_events.len() > crate::model::MAX_SSE_STREAM_BYTES {
return Err(TransformError::BufferLimitExceeded(format!(
"SSE stream size {} bytes exceeds {} byte limit",
upstream_events.len(),
crate::model::MAX_SSE_STREAM_BYTES
)));
}
crate::stream::transform_stream_to_openai_responses_sse(upstream_events, source, state)
}