Skip to main content

gproxy_protocol/transform/gemini/model_get/openai/
response.rs

1use crate::gemini::model_get::response::GeminiModelGetResponse;
2use crate::gemini::types::GeminiResponseHeaders;
3use crate::openai::model_get::response::OpenAiModelGetResponse;
4use crate::transform::gemini::model_get::openai::utils::{
5    gemini_error_response_from_openai, gemini_model_info_from_openai_model,
6};
7use crate::transform::utils::TransformError;
8
9impl TryFrom<OpenAiModelGetResponse> for GeminiModelGetResponse {
10    type Error = TransformError;
11
12    fn try_from(value: OpenAiModelGetResponse) -> Result<Self, TransformError> {
13        Ok(match value {
14            OpenAiModelGetResponse::Success {
15                stats_code,
16                headers,
17                body,
18            } => GeminiModelGetResponse::Success {
19                stats_code,
20                headers: GeminiResponseHeaders {
21                    extra: headers.extra,
22                },
23                body: gemini_model_info_from_openai_model(body),
24            },
25            OpenAiModelGetResponse::Error {
26                stats_code,
27                headers,
28                body,
29            } => GeminiModelGetResponse::Error {
30                stats_code,
31                headers: GeminiResponseHeaders {
32                    extra: headers.extra,
33                },
34                body: gemini_error_response_from_openai(stats_code, body),
35            },
36        })
37    }
38}