twapi_v2/fields/
media_fields.rs1use 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