Skip to main content

gproxy_protocol/gemini/stream_generate_content/
response.rs

1use http::StatusCode;
2use serde::{Deserialize, Serialize};
3
4use crate::gemini::types::{GeminiApiErrorResponse, GeminiResponseHeaders};
5
6/// Full HTTP response envelope for Gemini `models.streamGenerateContent`.
7///
8/// The actual stream chunks (`GeminiNdjsonChunk` or `GeminiSseChunk`) are
9/// processed one at a time by the transport layer — not collected here.
10/// This type only captures the initial HTTP response metadata and error case.
11#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
12#[serde(untagged)]
13pub enum GeminiStreamGenerateContentResponse {
14    Success {
15        #[serde(with = "crate::gemini::types::status_code_serde")]
16        stats_code: StatusCode,
17        headers: GeminiResponseHeaders,
18    },
19    Error {
20        #[serde(with = "crate::gemini::types::status_code_serde")]
21        stats_code: StatusCode,
22        headers: GeminiResponseHeaders,
23        body: GeminiApiErrorResponse,
24    },
25}