gproxy_protocol/gemini/model_list/
response.rs1use http::StatusCode;
2use serde::{Deserialize, Serialize};
3
4use crate::gemini::types::{GeminiApiErrorResponse, GeminiModelInfo, GeminiResponseHeaders};
5
6#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8pub struct ResponseBody {
9 #[serde(default, skip_serializing_if = "Vec::is_empty")]
11 pub models: Vec<GeminiModelInfo>,
12 #[serde(
14 rename = "nextPageToken",
15 default,
16 skip_serializing_if = "Option::is_none"
17 )]
18 pub next_page_token: Option<String>,
19}
20
21#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
23#[serde(untagged)]
24pub enum GeminiModelListResponse {
25 Success {
26 #[serde(with = "crate::gemini::types::status_code_serde")]
28 stats_code: StatusCode,
29 headers: GeminiResponseHeaders,
31 body: ResponseBody,
33 },
34 Error {
35 #[serde(with = "crate::gemini::types::status_code_serde")]
37 stats_code: StatusCode,
38 headers: GeminiResponseHeaders,
40 body: GeminiApiErrorResponse,
42 },
43}