Skip to main content

gproxy_protocol/openai/video/
types.rs

1use serde::{Deserialize, Serialize};
2
3macro_rules! extensible_string {
4    ($name:ident, $known:ident { $($variant:ident => $wire:literal),+ $(,)? }) => {
5        #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6        #[serde(untagged)]
7        pub enum $name {
8            Known($known),
9            Unknown(String),
10        }
11
12        #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
13        pub enum $known {
14            $(#[serde(rename = $wire)] $variant),+
15        }
16    };
17}
18
19extensible_string!(VideoModelId, KnownVideoModelId {
20    Sora2 => "sora-2",
21    Sora2Pro => "sora-2-pro",
22});
23extensible_string!(VideoSeconds, KnownVideoSeconds {
24    Four => "4", Eight => "8", Twelve => "12",
25});
26extensible_string!(VideoExtensionSeconds, KnownVideoExtensionSeconds {
27    Four => "4", Eight => "8", Twelve => "12", Sixteen => "16", Twenty => "20",
28});
29extensible_string!(VideoSize, KnownVideoSize {
30    Portrait720x1280 => "720x1280",
31    Landscape1280x720 => "1280x720",
32    Portrait1024x1792 => "1024x1792",
33    Landscape1792x1024 => "1792x1024",
34});
35extensible_string!(VideoContentVariant, KnownVideoContentVariant {
36    Video => "video", Thumbnail => "thumbnail", Spritesheet => "spritesheet",
37});
38extensible_string!(VideoListOrder, KnownVideoListOrder {
39    Asc => "asc", Desc => "desc",
40});
41extensible_string!(VideoStatus, KnownVideoStatus {
42    Queued => "queued", InProgress => "in_progress", Completed => "completed", Failed => "failed",
43});
44extensible_string!(VideoObjectType, KnownVideoObjectType {
45    Video => "video",
46});
47extensible_string!(VideoDeletedObjectType, KnownVideoDeletedObjectType {
48    VideoDeleted => "video.deleted",
49});
50extensible_string!(VideoListObjectType, KnownVideoListObjectType {
51    List => "list",
52});