gproxy_protocol/openai/
types.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
7#[serde(rename_all = "UPPERCASE")]
8pub enum HttpMethod {
9 Get,
10 Post,
11 Put,
12 Patch,
13 Delete,
14}
15
16#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
18pub struct OpenAiResponseHeaders {
19 #[serde(flatten, default, skip_serializing_if = "BTreeMap::is_empty")]
21 pub extra: BTreeMap<String, String>,
22}
23
24pub mod status_code_serde {
26 use http::StatusCode;
27 use serde::de::Error as _;
28 use serde::{Deserialize, Deserializer, Serializer};
29
30 pub fn serialize<S>(value: &StatusCode, serializer: S) -> Result<S::Ok, S::Error>
31 where
32 S: Serializer,
33 {
34 serializer.serialize_u16(value.as_u16())
35 }
36
37 pub fn deserialize<'de, D>(deserializer: D) -> Result<StatusCode, D::Error>
38 where
39 D: Deserializer<'de>,
40 {
41 let code = u16::deserialize(deserializer)?;
42 StatusCode::from_u16(code).map_err(D::Error::custom)
43 }
44}
45
46#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
48pub struct OpenAiModel {
49 pub id: String,
51 pub created: u64,
53 pub object: OpenAiModelObject,
55 pub owned_by: String,
57}
58
59#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
61pub enum OpenAiModelObject {
62 #[serde(rename = "model")]
63 Model,
64}
65
66#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
68pub struct OpenAiModelList {
69 pub data: Vec<OpenAiModel>,
71 pub object: OpenAiListObject,
73}
74
75#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
77pub enum OpenAiListObject {
78 #[serde(rename = "list")]
79 List,
80}
81
82#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
84pub struct OpenAiApiErrorResponse {
85 pub error: OpenAiApiError,
86}
87
88#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
90pub struct OpenAiApiError {
91 pub message: String,
93 #[serde(rename = "type")]
95 pub type_: String,
96 #[serde(default, skip_serializing_if = "Option::is_none")]
98 pub param: Option<String>,
99 #[serde(default, skip_serializing_if = "Option::is_none")]
101 pub code: Option<String>,
102}