gproxy_protocol/transform/openai/model_list/gemini/
response.rs1use crate::gemini::model_list::response::GeminiModelListResponse;
2use crate::openai::model_list::response::OpenAiModelListResponse;
3use crate::openai::types::{OpenAiListObject, OpenAiModelList, OpenAiResponseHeaders};
4use crate::transform::openai::model_list::gemini::utils::{
5 openai_error_response_from_gemini, openai_model_from_gemini_model,
6};
7use crate::transform::utils::TransformError;
8
9impl TryFrom<GeminiModelListResponse> for OpenAiModelListResponse {
10 type Error = TransformError;
11
12 fn try_from(value: GeminiModelListResponse) -> Result<Self, TransformError> {
13 Ok(match value {
14 GeminiModelListResponse::Success {
15 stats_code,
16 headers,
17 body,
18 } => OpenAiModelListResponse::Success {
19 stats_code,
20 headers: OpenAiResponseHeaders {
21 extra: headers.extra,
22 },
23 body: OpenAiModelList {
24 data: body
25 .models
26 .into_iter()
27 .map(openai_model_from_gemini_model)
28 .collect::<Vec<_>>(),
29 object: OpenAiListObject::List,
30 },
31 },
32 GeminiModelListResponse::Error {
33 stats_code,
34 headers,
35 body,
36 } => OpenAiModelListResponse::Error {
37 stats_code,
38 headers: OpenAiResponseHeaders {
39 extra: headers.extra,
40 },
41 body: openai_error_response_from_gemini(stats_code, body),
42 },
43 })
44 }
45}