gproxy_protocol/transform/openai/create_image/gemini/
response.rs1use 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}