aboutsummaryrefslogtreecommitdiff
path: root/tw/tweet.rs
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2017-10-02 01:27:08 -0700
committeriximeow <me@iximeow.net>2017-10-02 01:27:18 -0700
commit781981f333345482e93ed35453e98e519bb7cc5e (patch)
tree08cfbcc32b9fbea5f13fd3447026090f51402274 /tw/tweet.rs
parent081c0732b87383e3876fd6c60417f15830554174 (diff)
move everything to src/
Diffstat (limited to 'tw/tweet.rs')
-rw-r--r--tw/tweet.rs78
1 files changed, 0 insertions, 78 deletions
diff --git a/tw/tweet.rs b/tw/tweet.rs
deleted file mode 100644
index 778461a..0000000
--- a/tw/tweet.rs
+++ /dev/null
@@ -1,78 +0,0 @@
-extern crate serde_json;
-
-use tw::user::User;
-
-#[derive(Debug, Serialize, Deserialize)]
-pub struct Tweet {
- pub id: String,
- pub author_id: String,
- pub text: String,
- pub created_at: String, // lol
- #[serde(skip_serializing_if="Option::is_none")]
- #[serde(default = "Option::default")]
- pub quoted_tweet_id: Option<String>,
- #[serde(skip_serializing_if="Option::is_none")]
- #[serde(default = "Option::default")]
- pub rt_tweet: Option<String>,
- #[serde(skip)]
- pub internal_id: u64
-}
-
-impl Tweet {
- pub fn get_mentions(&self) -> Vec<&str> {
- self.text.split(&[
- ',', '.', '/', ';', '\'',
- '[', ']', '\\', '~', '!',
- '@', '#', '$', '%', '^',
- '&', '*', '(', ')', '-',
- '=', '{', '}', '|', ':',
- '"', '<', '>', '?', '`',
- ' ' // forgot this initially. awkward.
- ][..])
- .filter(|x| x.starts_with("@") && x.len() > 1)
- .collect()
- }
-
- pub fn from_api_json(json: serde_json::Value) -> Option<(Tweet, User)> {
- Tweet::from_json(json.clone()).and_then(|tw| {
- json.get("user").and_then(|user_json|
- User::from_json(user_json.to_owned()).map(|u| (tw, u))
- )
- })
- }
- pub fn from_json(json: serde_json::Value) -> Option<Tweet> {
- if let serde_json::Value::Object(json_map) = json {
- let text = ::tw::full_twete_text(&json_map);
- let rt_twete = json_map.get("retweeted_status")
- .and_then(|x| x.get("id_str"))
- .and_then(|x| x.as_str())
- .map(|x| x.to_owned());
- if json_map.contains_key("id_str") &&
- json_map.contains_key("user") &&
- json_map.contains_key("created_at") {
- if let (
- Some(id_str),
- Some(author_id),
- Some(created_at)
- ) = (
- json_map["id_str"].as_str(),
- json_map["user"]["id_str"].as_str(),
- json_map["created_at"].as_str()
- ) {
- return Some(Tweet {
- id: id_str.to_owned(),
- author_id: author_id.to_owned(),
- text: text,
- created_at: created_at.to_owned(),
- quoted_tweet_id: json_map.get("quoted_status_id_str")
- .and_then(|x| x.as_str())
- .map(|x| x.to_owned()),
- rt_tweet: rt_twete,
- internal_id: 0
- })
- }
- }
- }
- None
- }
-}