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