twitter_v2/data/
entity.rs1#[cfg(feature = "arbitrary_precision")]
2use serde_json::Number;
3
4use crate::id::NumericId;
5use serde::{Deserialize, Serialize};
6use url::Url;
7
8#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)]
9pub struct UrlImage {
10 pub url: Url,
11 pub width: usize,
12 pub height: usize,
13}
14
15#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)]
16pub struct UrlEntity {
17 pub start: usize,
18 pub end: usize,
19 pub url: String,
20 pub expanded_url: String,
21 pub display_url: String,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub images: Option<Vec<UrlImage>>,
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub status: Option<usize>,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub title: Option<String>,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub description: Option<String>,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub unwound_url: Option<String>,
32}
33
34#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)]
35pub struct HashtagEntity {
36 pub start: usize,
37 pub end: usize,
38 pub tag: String,
39}
40
41#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
42#[cfg_attr(feature = "arbitrary_precision", derive(Eq))]
43pub struct AnnotationEntity {
44 pub start: isize,
45 pub end: isize,
46 #[cfg(feature = "arbitrary_precision")]
47 pub probability: Number,
48 #[cfg(not(feature = "arbitrary_precision"))]
49 pub probability: f64,
50 #[serde(rename = "type")]
51 pub kind: String,
52 pub normalized_text: String,
53}
54
55#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)]
56pub struct CashtagEntity {
57 pub start: usize,
58 pub end: usize,
59 pub tag: String,
60}
61
62#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)]
63pub struct MentionEntity {
64 pub start: usize,
65 pub end: usize,
66 pub username: String,
67 #[serde(skip_serializing_if = "Option::is_none")]
68 pub id: Option<NumericId>,
69}
70
71#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
72#[cfg_attr(feature = "arbitrary_precision", derive(Eq))]
73pub struct FullTextEntities {
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub urls: Option<Vec<UrlEntity>>,
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub hashtags: Option<Vec<HashtagEntity>>,
78 #[serde(skip_serializing_if = "Option::is_none")]
79 pub annotations: Option<Vec<AnnotationEntity>>,
80 #[serde(skip_serializing_if = "Option::is_none")]
81 pub cashtags: Option<Vec<CashtagEntity>>,
82 #[serde(skip_serializing_if = "Option::is_none")]
83 pub mentions: Option<Vec<MentionEntity>>,
84}