gproxy_protocol/protocol/openai/video/
enums.rs1macro_rules! video_string_enum {
2 ($outer:ident, $known:ident { $($variant:ident => $wire:literal),+ $(,)? }) => {
3 #[derive(Debug, Clone, PartialEq, Eq, serde::Serialize)]
4 #[serde(untagged)]
5 #[non_exhaustive]
6 pub enum $outer {
7 Known($known),
8 Unknown(String),
9 }
10
11 impl<'de> serde::Deserialize<'de> for $outer {
12 fn deserialize<D: serde::Deserializer<'de>>(d: D) -> Result<Self, D::Error> {
13 crate::protocol::extensible::deserialize_extensible(d, Self::Known, Self::Unknown)
14 }
15 }
16
17 #[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
18 #[non_exhaustive]
19 pub enum $known {
20 $(#[serde(rename = $wire)] $variant,)+
21 }
22 };
23}
24
25video_string_enum!(VideoModelId, VideoModelIdKnown {
26 Sora2 => "sora-2",
27 Sora2Pro => "sora-2-pro",
28 Sora220251006 => "sora-2-2025-10-06",
29 Sora2Pro20251006 => "sora-2-pro-2025-10-06",
30 Sora220251208 => "sora-2-2025-12-08",
31});
32
33video_string_enum!(VideoSeconds, VideoSecondsKnown {
34 Four => "4",
35 Eight => "8",
36 Twelve => "12",
37});
38
39video_string_enum!(VideoExtensionSeconds, VideoExtensionSecondsKnown {
40 Four => "4",
41 Eight => "8",
42 Twelve => "12",
43 Sixteen => "16",
44 Twenty => "20",
45});
46
47video_string_enum!(VideoSize, VideoSizeKnown {
48 Size720By1280 => "720x1280",
49 Size1280By720 => "1280x720",
50 Size1024By1792 => "1024x1792",
51 Size1792By1024 => "1792x1024",
52});
53
54video_string_enum!(VideoContentVariant, VideoContentVariantKnown {
55 Video => "video",
56 Thumbnail => "thumbnail",
57 Spritesheet => "spritesheet",
58});
59
60video_string_enum!(VideoListOrder, VideoListOrderKnown {
61 Ascending => "asc",
62 Descending => "desc",
63});
64
65video_string_enum!(VideoStatus, VideoStatusKnown {
66 Queued => "queued",
67 InProgress => "in_progress",
68 Completed => "completed",
69 Failed => "failed",
70});
71
72#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
73#[non_exhaustive]
74pub enum VideoObjectType {
75 #[serde(rename = "video")]
76 Video,
77}
78
79#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
80#[non_exhaustive]
81pub enum VideoDeletedObjectType {
82 #[serde(rename = "video.deleted")]
83 VideoDeleted,
84}
85
86#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
87#[non_exhaustive]
88pub enum VideoListObjectType {
89 #[serde(rename = "list")]
90 List,
91}