Skip to main content

twapi_v2/responses/
entities.rs

1use crate::responses::{
2    annotations::Annotations, cashtags::Cashtags, hashtags::Hashtags, mentions::Mentions,
3    urls::Urls,
4};
5use serde::{Deserialize, Serialize};
6
7#[derive(Serialize, Deserialize, Debug, Clone, Default, PartialEq)]
8pub struct Entities {
9    #[serde(skip_serializing_if = "Option::is_none")]
10    pub annotations: Option<Vec<Annotations>>,
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub cashtags: Option<Vec<Cashtags>>,
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub hashtags: Option<Vec<Hashtags>>,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub mentions: Option<Vec<Mentions>>,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub urls: Option<Vec<Urls>>,
19    #[serde(flatten)]
20    pub extra: std::collections::HashMap<String, serde_json::Value>,
21}
22
23impl Entities {
24    pub fn is_empty_extra(&self) -> bool {
25        let res = self.extra.is_empty()
26            && self
27                .annotations
28                .as_ref()
29                .map(|it| it.iter().all(|item| item.is_empty_extra()))
30                .unwrap_or(true)
31            && self
32                .cashtags
33                .as_ref()
34                .map(|it| it.iter().all(|item| item.is_empty_extra()))
35                .unwrap_or(true)
36            && self
37                .hashtags
38                .as_ref()
39                .map(|it| it.iter().all(|item| item.is_empty_extra()))
40                .unwrap_or(true)
41            && self
42                .mentions
43                .as_ref()
44                .map(|it| it.iter().all(|item| item.is_empty_extra()))
45                .unwrap_or(true)
46            && self
47                .urls
48                .as_ref()
49                .map(|it| it.iter().all(|item| item.is_empty_extra()))
50                .unwrap_or(true);
51        if !res {
52            println!("Entities {:?}", self.extra);
53        }
54        res
55    }
56}