Skip to main content

gproxy_protocol/transform/gemini/stream_generate_content/openai_response/
request.rs

1use crate::gemini::generate_content::request::{
2    GeminiGenerateContentRequest, PathParameters as GeminiGenerateContentPathParameters,
3    QueryParameters as GeminiGenerateContentQueryParameters,
4    RequestHeaders as GeminiGenerateContentRequestHeaders,
5};
6use crate::gemini::generate_content::types::HttpMethod as GeminiGenerateContentHttpMethod;
7use crate::gemini::stream_generate_content::request::GeminiStreamGenerateContentRequest;
8use crate::openai::create_response::request::OpenAiCreateResponseRequest;
9use crate::openai::create_response::types::HttpMethod as OpenAiHttpMethod;
10use crate::transform::utils::TransformError;
11
12impl TryFrom<GeminiStreamGenerateContentRequest> for OpenAiCreateResponseRequest {
13    type Error = TransformError;
14
15    fn try_from(value: GeminiStreamGenerateContentRequest) -> Result<Self, TransformError> {
16        let mut output = OpenAiCreateResponseRequest::try_from(GeminiGenerateContentRequest {
17            method: GeminiGenerateContentHttpMethod::Post,
18            path: GeminiGenerateContentPathParameters {
19                model: value.path.model,
20            },
21            query: GeminiGenerateContentQueryParameters::default(),
22            headers: GeminiGenerateContentRequestHeaders::default(),
23            body: value.body,
24        })?;
25        output.method = OpenAiHttpMethod::Post;
26        output.body.stream = Some(true);
27        Ok(output)
28    }
29}