gproxy_protocol/transform/gemini/
nonstream_to_stream.rs1use crate::gemini::generate_content::request::GeminiGenerateContentRequest;
2use crate::gemini::generate_content::response::GeminiGenerateContentResponse;
3use crate::gemini::stream_generate_content::request::GeminiStreamGenerateContentRequest;
4use crate::gemini::stream_generate_content::response::GeminiStreamGenerateContentResponse;
5use crate::transform::utils::TransformError;
6
7impl TryFrom<&GeminiGenerateContentRequest> for GeminiStreamGenerateContentRequest {
8 type Error = TransformError;
9
10 fn try_from(value: &GeminiGenerateContentRequest) -> Result<Self, TransformError> {
11 Ok(GeminiStreamGenerateContentRequest {
12 method: value.method,
13 path: crate::gemini::stream_generate_content::request::PathParameters {
14 model: value.path.model.clone(),
15 },
16 query: crate::gemini::stream_generate_content::request::QueryParameters::default(),
17 headers: crate::gemini::stream_generate_content::request::RequestHeaders::default(),
18 body: value.body.clone(),
19 })
20 }
21}
22
23impl TryFrom<GeminiGenerateContentRequest> for GeminiStreamGenerateContentRequest {
24 type Error = TransformError;
25
26 fn try_from(value: GeminiGenerateContentRequest) -> Result<Self, TransformError> {
27 GeminiStreamGenerateContentRequest::try_from(&value)
28 }
29}
30
31impl TryFrom<GeminiGenerateContentResponse> for GeminiStreamGenerateContentResponse {
32 type Error = TransformError;
33
34 fn try_from(value: GeminiGenerateContentResponse) -> Result<Self, TransformError> {
35 Ok(match value {
36 GeminiGenerateContentResponse::Success {
37 stats_code,
38 headers,
39 ..
40 } => GeminiStreamGenerateContentResponse::Success {
41 stats_code,
42 headers,
43 },
44 GeminiGenerateContentResponse::Error {
45 stats_code,
46 headers,
47 body,
48 } => GeminiStreamGenerateContentResponse::Error {
49 stats_code,
50 headers,
51 body,
52 },
53 })
54 }
55}