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