gproxy_protocol/openai/video/
types.rs1use 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});