pub struct TweetObject {
pub tweet: Tweet,
}Expand description
§Example
use chrono::{DateTime, NaiveDateTime, Utc};
use twitter_archive::convert::{created_at, date_time_iso_8601};
use twitter_archive::structs::tweets::TweetObject;
let editable_until_string = "2023-08-12T17:10:37.000Z";
let editable_until_native_time = NaiveDateTime::parse_from_str(&editable_until_string, date_time_iso_8601::FORMAT).unwrap();
let editable_until_date_time = DateTime::<Utc>::from_naive_utc_and_offset(editable_until_native_time, Utc);
let created_at_string = "Sat Aug 12 16:10:37 +0000 2023";
let created_at_date_time: DateTime<Utc> = DateTime::parse_from_str(&created_at_string, created_at::FORMAT)
.unwrap()
.into();
let json = format!(r#"{{
"tweet": {{
"edit_info": {{
"initial": {{
"editTweetIds": [
"1690395372546301952"
],
"editableUntil": "{editable_until_string}",
"editsRemaining": "5",
"isEditEligible": true
}}
}},
"retweeted": false,
"source": "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Twitter Web App</a>",
"entities": {{
"hashtags": [],
"symbols": [],
"user_mentions": [
{{
"name": "ThePrimeagen",
"screen_name": "ThePrimeagen",
"indices": [
"0",
"13"
],
"id_str": "291797158",
"id": "291797158"
}}
],
"urls": [
{{
"url": "https://t.co/4LBPKIGBzf",
"expanded_url": "https://www.youtube.com/watch?v=J7bX5dPUw0g",
"display_url": "youtube.com/watch?v=J7bX5d…",
"indices": [
"132",
"155"
]
}}
]
}},
"display_text_range": [
"0",
"276"
],
"favorite_count": "0",
"id_str": "1690395372546301952",
"in_reply_to_user_id": "291797158",
"truncated": false,
"retweet_count": "0",
"id": "1690395372546301952",
"possibly_sensitive": false,
"created_at": "{created_at_string}",
"favorited": false,
"full_text": "@ThePrimeagen to answer your question about when writing interfaces, without the intention to change or test, is a good idea from;\n\nhttps://t.co/4LBPKIGBzf\n\n... Solidity interfaces are cheaper to store (S3), and pass over-the-wire, than shipping full contract(s) to consumers.",
"lang": "en",
"in_reply_to_screen_name": "ThePrimeagen",
"in_reply_to_user_id_str": "291797158"
}}
}}"#);
let data: TweetObject = serde_json::from_str(&json).unwrap();
// De-serialized properties
assert_eq!(data.tweet.retweeted, false);
assert_eq!(data.tweet.source, "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Twitter Web App</a>");
assert_eq!(data.tweet.display_text_range, [0, 276]);
assert_eq!(data.tweet.favorite_count, 0);
assert_eq!(data.tweet.id_str, "1690395372546301952");
assert_eq!(data.tweet.in_reply_to_user_id, Some("291797158".to_string()));
assert_eq!(data.tweet.truncated, false);
assert_eq!(data.tweet.retweet_count, 0);
assert_eq!(data.tweet.id, "1690395372546301952");
assert_eq!(data.tweet.possibly_sensitive, Some(false));
assert_eq!(data.tweet.created_at, created_at_date_time);
assert_eq!(data.tweet.favorited, false);
assert_eq!(data.tweet.full_text, "@ThePrimeagen to answer your question about when writing interfaces, without the intention to change or test, is a good idea from;\n\nhttps://t.co/4LBPKIGBzf\n\n... Solidity interfaces are cheaper to store (S3), and pass over-the-wire, than shipping full contract(s) to consumers.");
assert_eq!(data.tweet.lang, "en");
assert_eq!(data.tweet.in_reply_to_screen_name, Some("ThePrimeagen".to_string()));
assert_eq!(data.tweet.in_reply_to_user_id_str, Some("291797158".to_string()));
// Re-serialize is equivalent to original data
assert_eq!(serde_json::to_string_pretty(&data).unwrap(), json);Fields§
§tweet: TweetWhy they wrapped a list of Tweets within unnecessary object label is anyone’s guess
§Example JSON data
{
"tweet": {
"edit_info": {
"initial": {
"editTweetIds": ["1690395372546301952"],
"editableUntil": "2023-08-12T17:10:37.000Z",
"editsRemaining": "5",
"isEditEligible": true
}
},
"retweeted": false,
"source": "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Twitter Web App</a>",
"entities": {
"hashtags": [],
"symbols": [],
"user_mentions": [
{
"name": "ThePrimeagen",
"screen_name": "ThePrimeagen",
"indices": ["0", "13"],
"id_str": "291797158",
"id": "291797158"
}
],
"urls": [
{
"url": "https://t.co/4LBPKIGBzf",
"expanded_url": "https://www.youtube.com/watch?v=J7bX5dPUw0g",
"display_url": "youtube.com/watch?v=J7bX5d…",
"indices": ["132", "155"]
}
]
},
"display_text_range": ["0", "276"],
"favorite_count": "0",
"id_str": "1690395372546301952",
"in_reply_to_user_id": "291797158",
"truncated": false,
"retweet_count": "0",
"id": "1690395372546301952",
"possibly_sensitive": false,
"created_at": "Sat Aug 12 16:10:37 +0000 2023",
"favorited": false,
"full_text": "@ThePrimeagen to answer your question about when writing interfaces, without the intention to change or test, is a good idea from;\n\nhttps://t.co/4LBPKIGBzf\n\n... Solidity interfaces are cheaper to store (S3), and pass over-the-wire, than shipping full contract(s) to consumers.",
"lang": "en",
"in_reply_to_screen_name": "ThePrimeagen",
"in_reply_to_user_id_str": "291797158"
}
}Trait Implementations§
Source§impl Clone for TweetObject
impl Clone for TweetObject
Source§fn clone(&self) -> TweetObject
fn clone(&self) -> TweetObject
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for TweetObject
impl Debug for TweetObject
Source§impl<'de> Deserialize<'de> for TweetObject
impl<'de> Deserialize<'de> for TweetObject
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Display for TweetObject
impl Display for TweetObject
Auto Trait Implementations§
impl Freeze for TweetObject
impl RefUnwindSafe for TweetObject
impl Send for TweetObject
impl Sync for TweetObject
impl Unpin for TweetObject
impl UnwindSafe for TweetObject
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more