twapi_v2/fields/
media_fields.rs

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