twapi_v2/fields/
media_fields.rs1use serde::{Deserialize, Serialize};
2use std::collections::HashSet;
3
4#[derive(Serialize, Deserialize, Debug, Eq, Hash, PartialEq, Clone)]
5pub enum MediaFields {
6 #[serde(rename = "alt_text")]
7 AltText,
8 #[serde(rename = "duration_ms")]
9 DurationMs,
10 #[serde(rename = "height")]
11 Height,
12 #[serde(rename = "media_key")]
13 MediaKey,
14 #[serde(rename = "non_public_metrics")]
15 NonPublicMetrics,
16 #[serde(rename = "organic_metrics")]
17 OrganicMetrics,
18 #[serde(rename = "preview_image_url")]
19 PreviewImageUrl,
20 #[serde(rename = "promoted_metrics")]
21 PromotedMetrics,
22 #[serde(rename = "public_metrics")]
23 PublicMetrics,
24 #[serde(rename = "type")]
25 Type,
26 #[serde(rename = "url")]
27 Url,
28 #[serde(rename = "variants")]
29 Variants,
30 #[serde(rename = "width")]
31 Width,
32}
33
34impl MediaFields {
35 pub fn all() -> HashSet<Self> {
36 let mut result = HashSet::new();
37 result.insert(Self::AltText);
38 result.insert(Self::DurationMs);
39 result.insert(Self::Height);
40 result.insert(Self::MediaKey);
41 result.insert(Self::NonPublicMetrics);
42 result.insert(Self::OrganicMetrics);
43 result.insert(Self::PreviewImageUrl);
44 result.insert(Self::PromotedMetrics);
45 result.insert(Self::PublicMetrics);
46 result.insert(Self::Type);
47 result.insert(Self::Url);
48 result.insert(Self::Variants);
49 result.insert(Self::Width);
50 result
51 }
52
53 pub fn open() -> HashSet<Self> {
54 let mut result = HashSet::new();
55 result.insert(Self::AltText);
56 result.insert(Self::DurationMs);
57 result.insert(Self::Height);
58 result.insert(Self::MediaKey);
59 result.insert(Self::PreviewImageUrl);
60 result.insert(Self::PromotedMetrics);
61 result.insert(Self::PublicMetrics);
62 result.insert(Self::Type);
63 result.insert(Self::Url);
64 result.insert(Self::Variants);
65 result.insert(Self::Width);
66 result
67 }
68}
69
70impl std::fmt::Display for MediaFields {
71 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
72 match self {
73 Self::AltText => write!(f, "alt_text"),
74 Self::DurationMs => write!(f, "duration_ms"),
75 Self::Height => write!(f, "height"),
76 Self::MediaKey => write!(f, "media_key"),
77 Self::NonPublicMetrics => write!(f, "non_public_metrics"),
78 Self::OrganicMetrics => write!(f, "organic_metrics"),
79 Self::PreviewImageUrl => write!(f, "preview_image_url"),
80 Self::PromotedMetrics => write!(f, "promoted_metrics"),
81 Self::PublicMetrics => write!(f, "public_metrics"),
82 Self::Type => write!(f, "type"),
83 Self::Url => write!(f, "url"),
84 Self::Variants => write!(f, "variants"),
85 Self::Width => write!(f, "width"),
86 }
87 }
88}
89
90impl Default for MediaFields {
91 fn default() -> Self {
92 Self::AltText
93 }
94}