Skip to main content

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

1use crate::claude::create_message::request::ClaudeCreateMessageRequest;
2use crate::gemini::stream_generate_content::request::{
3    GeminiStreamGenerateContentRequest,
4    PathParameters as GeminiStreamGenerateContentPathParameters,
5    QueryParameters as GeminiStreamGenerateContentQueryParameters,
6    RequestHeaders as GeminiStreamGenerateContentRequestHeaders,
7};
8use crate::gemini::types::HttpMethod as GeminiHttpMethod;
9use crate::transform::utils::TransformError;
10
11impl TryFrom<&ClaudeCreateMessageRequest> for GeminiStreamGenerateContentRequest {
12    type Error = TransformError;
13
14    fn try_from(value: &ClaudeCreateMessageRequest) -> Result<Self, TransformError> {
15        let output =
16            crate::gemini::generate_content::request::GeminiGenerateContentRequest::try_from(
17                value.clone(),
18            )?;
19        Ok(Self {
20            method: GeminiHttpMethod::Post,
21            path: GeminiStreamGenerateContentPathParameters {
22                model: output.path.model,
23            },
24            query: GeminiStreamGenerateContentQueryParameters::default(),
25            headers: GeminiStreamGenerateContentRequestHeaders::default(),
26            body: output.body,
27        })
28    }
29}