Skip to main content

gproxy_protocol/protocol/openai/video/
enums.rs

1macro_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}