Skip to main content

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

1use crate::gemini::generate_content::response::{
2    GeminiGenerateContentResponse, ResponseBody as GeminiGenerateContentResponseBody,
3};
4use crate::openai::create_image::response::OpenAiCreateImageResponse;
5use crate::openai::create_image::types as it;
6use crate::transform::openai::create_image::gemini::utils::{
7    create_image_response_body_from_gemini_response, openai_response_headers_from_gemini,
8};
9use crate::transform::openai::model_list::gemini::utils::openai_error_response_from_gemini;
10use crate::transform::utils::TransformError;
11
12impl TryFrom<GeminiGenerateContentResponseBody> for it::OpenAiCreateImageResponseBody {
13    type Error = TransformError;
14
15    fn try_from(value: GeminiGenerateContentResponseBody) -> Result<Self, TransformError> {
16        create_image_response_body_from_gemini_response(value)
17    }
18}
19
20impl TryFrom<GeminiGenerateContentResponse> for OpenAiCreateImageResponse {
21    type Error = TransformError;
22
23    fn try_from(value: GeminiGenerateContentResponse) -> Result<Self, TransformError> {
24        Ok(match value {
25            GeminiGenerateContentResponse::Success {
26                stats_code,
27                headers,
28                body,
29            } => OpenAiCreateImageResponse::Success {
30                stats_code,
31                headers: openai_response_headers_from_gemini(headers),
32                body: it::OpenAiCreateImageResponseBody::try_from(body)?,
33            },
34            GeminiGenerateContentResponse::Error {
35                stats_code,
36                headers,
37                body,
38            } => OpenAiCreateImageResponse::Error {
39                stats_code,
40                headers: openai_response_headers_from_gemini(headers),
41                body: openai_error_response_from_gemini(stats_code, body),
42            },
43        })
44    }
45}