Skip to main content

twapi_v2/fields/
media_fields.rs

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