From 6c0383d9d0b3f0770a13a661127b08ec45d234c3 Mon Sep 17 00:00:00 2001 From: VC Date: Sun, 24 Apr 2022 11:57:40 +0200 Subject: [PATCH] refactor: build better decode functions --- src/mastodon.rs | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/src/mastodon.rs b/src/mastodon.rs index 55f319e..ec079c3 100644 --- a/src/mastodon.rs +++ b/src/mastodon.rs @@ -20,27 +20,18 @@ use elefren::{ /// Decodes the Twitter mention to something that will make sense once Twitter has joined the /// Fediverse fn twitter_mentions(ums: &Vec) -> HashMap { - let mut decoded_mentions = HashMap::new(); - - for um in ums { - decoded_mentions.insert(format!("@{}", um.screen_name), format!("@{}@twitter.com", um.screen_name)); - } - - decoded_mentions + ums.iter().map(|s| + (format!("@{}", s.screen_name), format!("@{}@twitter.com", s.screen_name)) + ).collect() } /// Decodes urls from UrlEntities fn decode_urls(urls: &Vec) -> HashMap { - let mut decoded_urls = HashMap::new(); - - for url in urls { - if url.expanded_url.is_some() { - // unwrap is safe here as we just verified that there is something inside expanded_url - decoded_urls.insert(String::from(&url.url), String::from(url.expanded_url.as_deref().unwrap())); - } - } - - decoded_urls + urls.iter() + .filter(|s| s.expanded_url.is_some()) + .map(|s| + (String::from(&s.url), String::from(s.expanded_url.as_deref().unwrap())) + ).collect() } /// Gets Mastodon Data @@ -61,13 +52,11 @@ pub fn build_basic_status(tweet: &Tweet) -> Result> { let mut toot = String::from(&tweet.text); let decoded_urls = decode_urls(&tweet.entities.urls); - for decoded_url in decoded_urls { toot = toot.replace(&decoded_url.0, &decoded_url.1); } let decoded_mentions = twitter_mentions(&tweet.entities.user_mentions); - for decoded_mention in decoded_mentions { toot = toot.replace(&decoded_mention.0, &decoded_mention.1); }