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