From 37694877419e261cc23466eae6dc7dfe97ae3c08 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Wed, 10 Jan 2024 11:41:24 +0530 Subject: [PATCH] feat(rust): upgrade to latest nightly --- flake.nix | 2 +- rust-toolchain.toml | 2 +- src/commands.rs | 21 ++++++++++++++------- src/deamp/mod.rs | 14 +++++++------- src/instagram.rs | 12 +++++------- src/medium.rs | 12 +++++------- src/twitter.rs | 16 +++++++--------- src/utils.rs | 17 +++++++++++++---- src/youtube.rs | 12 +++++------- 9 files changed, 58 insertions(+), 50 deletions(-) diff --git a/flake.nix b/flake.nix index 34830df..d03d6da 100644 --- a/flake.nix +++ b/flake.nix @@ -42,7 +42,7 @@ rustNightly = (import fenix {inherit pkgs;}).fromToolchainFile { file = ./rust-toolchain.toml; - sha256 = "sha256-3+hzpuIkf2KFGyop0DgMPI5nCY6IQX8I6XdIUwn4nAI="; + sha256 = "sha256-Je+rS6Tgc04HqvDj2XvjOpbyIAcEee0JqqrG7+cUydI="; }; craneLib = (crane.mkLib pkgs).overrideToolchain rustNightly; diff --git a/rust-toolchain.toml b/rust-toolchain.toml index e077e77..8e24b68 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] -channel = "nightly-2023-10-22" +channel = "nightly-2024-01-09" components = ["clippy", "rustfmt", "rust-src"] targets = ["x86_64-unknown-linux-gnu"] profile = "minimal" diff --git a/src/commands.rs b/src/commands.rs index b378170..7f3c9db 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -58,12 +58,13 @@ pub(crate) async fn handler( Command::Ping => { bot.send_chat_action(message.chat.id, ChatAction::Typing) .await?; - bot.send_message(message.chat.id, "Pong") - .await?; - }, + bot.send_message(message.chat.id, "Pong").await?; + } #[cfg(feature = "ddinstagram")] Command::Instagram { filter_state } => { - if let Some(from) = message.from() && from.id != *BOT_OWNER { + if let Some(from) = message.from() + && from.id != *BOT_OWNER + { bot.send_chat_action(message.chat.id, ChatAction::Typing) .await?; bot.send_message(message.chat.id, "You are not authorized for this action") @@ -85,7 +86,9 @@ pub(crate) async fn handler( } } Command::Medium { filter_state } => { - if let Some(from) = message.from() && from.id != *BOT_OWNER { + if let Some(from) = message.from() + && from.id != *BOT_OWNER + { bot.send_chat_action(message.chat.id, ChatAction::Typing) .await?; bot.send_message(message.chat.id, "You are not authorized for this action") @@ -113,7 +116,9 @@ pub(crate) async fn handler( .await?; } Command::Twitter { filter_state } => { - if let Some(from) = message.from() && from.id != *BOT_OWNER { + if let Some(from) = message.from() + && from.id != *BOT_OWNER + { bot.send_chat_action(message.chat.id, ChatAction::Typing) .await?; bot.send_message(message.chat.id, "You are not authorized for this action") @@ -135,7 +140,9 @@ pub(crate) async fn handler( } } Command::YouTube { filter_state } => { - if let Some(from) = message.from() && from.id != *BOT_OWNER { + if let Some(from) = message.from() + && from.id != *BOT_OWNER + { bot.send_chat_action(message.chat.id, ChatAction::Typing) .await?; bot.send_message(message.chat.id, "You are not authorized for this action") diff --git a/src/deamp/mod.rs b/src/deamp/mod.rs index 890dea2..69ebff0 100644 --- a/src/deamp/mod.rs +++ b/src/deamp/mod.rs @@ -17,7 +17,9 @@ pub async fn handler( bot: Bot, message: Message, ) -> Result<(), Box> { - if let Some(text) = message.text() && let Some(user) = message.from() { + if let Some(text) = message.text() + && let Some(user) = message.from() + { let mut text = String::from_str(text)?; let urls = get_urls_from_message(&message); debug!(?urls); @@ -34,11 +36,7 @@ pub async fn handler( return Ok(()); } } - let text = format!( - "{}: {}", - link(user.url().as_str(), &user.full_name()), - text - ); + let text = format!("{}: {}", link(user.url().as_str(), &user.full_name()), text); let _del = bot.delete_message(message.chat.id, message.id).await; bot.try_reply(message, text).await?; } @@ -53,7 +51,9 @@ pub fn is_amp(msg: Message) -> bool { return false; } urls.iter().flat_map(|url| Url::parse(url)).any(|url| { - if let Some(mut segments) = url.path_segments() && let Some(host) = url.host_str() { + if let Some(mut segments) = url.path_segments() + && let Some(host) = url.host_str() + { segments.any(|x| x == "amp") || host.ends_with(".cdn.ampproject.org") } else { false diff --git a/src/instagram.rs b/src/instagram.rs index 2dcf888..c9fcbf2 100644 --- a/src/instagram.rs +++ b/src/instagram.rs @@ -62,14 +62,12 @@ pub async fn handler( bot: Bot, message: Message, ) -> Result<(), Box> { - if let Some(text) = scrub_urls(&message) && let Some(user) = message.from() && - let Some(caps) = MATCH_REGEX.captures(&text) { + if let Some(text) = scrub_urls(&message) + && let Some(user) = message.from() + && let Some(caps) = MATCH_REGEX.captures(&text) + { let text = text.replace(&caps[HOST_MATCH_GROUP], "ddinstagram.com"); - let text = format!( - "{}: {}", - link(user.url().as_str(), &user.full_name()), - text - ); + let text = format!("{}: {}", link(user.url().as_str(), &user.full_name()), text); let _del = bot.delete_message(message.chat.id, message.id).await; bot.try_reply(message, text).await?; } diff --git a/src/medium.rs b/src/medium.rs index 24f4cb8..4063955 100644 --- a/src/medium.rs +++ b/src/medium.rs @@ -61,14 +61,12 @@ pub async fn handler( bot: Bot, message: Message, ) -> Result<(), Box> { - if let Some(text) = scrub_urls(&message) && let Some(user) = message.from() && - let Some(caps) = MATCH_REGEX.captures(&text) { + if let Some(text) = scrub_urls(&message) + && let Some(user) = message.from() + && let Some(caps) = MATCH_REGEX.captures(&text) + { let text = text.replace(&caps[HOST_MATCH_GROUP], "medium.rip"); - let text = format!( - "{}: {}", - link(user.url().as_str(), &user.full_name()), - text - ); + let text = format!("{}: {}", link(user.url().as_str(), &user.full_name()), text); let _del = bot.delete_message(message.chat.id, message.id).await; bot.try_reply(message, text).await?; } diff --git a/src/twitter.rs b/src/twitter.rs index ecb73f2..a13cd3f 100644 --- a/src/twitter.rs +++ b/src/twitter.rs @@ -64,21 +64,19 @@ pub async fn handler( bot: Bot, message: Message, ) -> Result<(), Box> { - if let Some(text) = scrub_urls(&message) && let Some(user) = message.from() && - let Some(caps) = MATCH_REGEX.captures(&text) { + if let Some(text) = scrub_urls(&message) + && let Some(user) = message.from() + && let Some(caps) = MATCH_REGEX.captures(&text) + { let text = match &caps[ROOT_MATCH_GROUP] { "twitter" => text.replace(&caps[HOST_MATCH_GROUP], "vxtwitter.com"), "x" => text.replace(&caps[HOST_MATCH_GROUP], "fixupx.com"), _ => { tracing::trace!("No URL match found in {text}"); - return Ok(()) - }, + return Ok(()); + } }; - let text = format!( - "{}: {}", - link(user.url().as_str(), &user.full_name()), - text - ); + let text = format!("{}: {}", link(user.url().as_str(), &user.full_name()), text); let _del = bot.delete_message(message.chat.id, message.id).await; bot.try_reply(message, text).await?; } diff --git a/src/utils.rs b/src/utils.rs index b7603b8..2dad13f 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -4,8 +4,13 @@ use teloxide::types::{Message, MessageEntityKind}; use tracing::{error, info}; pub(crate) fn get_urls_from_message(msg: &Message) -> Vec { - if let Some(entities) = msg.entities() && !entities.is_empty() && let Some(text) = msg.text() { - if entities[0].kind == MessageEntityKind::BotCommand { return Vec::new(); }; + if let Some(entities) = msg.entities() + && !entities.is_empty() + && let Some(text) = msg.text() + { + if entities[0].kind == MessageEntityKind::BotCommand { + return Vec::new(); + }; let url_entities: Vec<_> = entities .iter() .filter(|entity| entity.kind == MessageEntityKind::Url) @@ -16,7 +21,9 @@ pub(crate) fn get_urls_from_message(msg: &Message) -> Vec { let utf16 = text.encode_utf16().collect::>(); let mut urls = Vec::with_capacity(url_entities.len()); for entity in &url_entities { - urls.push(String::from_utf16_lossy(&utf16[entity.offset..entity.offset + entity.length])); + urls.push(String::from_utf16_lossy( + &utf16[entity.offset..entity.offset + entity.length], + )); } info!(message_id = %msg.id.0, ?urls, "get_urls_from_message"); return urls; @@ -29,7 +36,9 @@ pub(crate) fn scrub_urls(msg: &Message) -> Option { let urls = get_urls_from_message(msg); let mut final_text = text.to_owned(); for item in urls { - if let Ok(url) = Url::parse(&item) && let Some(query_str) = url.query() { + if let Ok(url) = Url::parse(&item) + && let Some(query_str) = url.query() + { let scrubbed_url = item.replace(&format!("?{query_str}"), ""); final_text = final_text.replace(&item, &scrubbed_url); } diff --git a/src/youtube.rs b/src/youtube.rs index eda5825..d378459 100644 --- a/src/youtube.rs +++ b/src/youtube.rs @@ -60,14 +60,12 @@ pub async fn handler( bot: Bot, message: Message, ) -> Result<(), Box> { - if let Some(text) = scrub_urls(&message) && let Some(user) = message.from() && - let Some(caps) = MATCH_REGEX.captures(&text) { + if let Some(text) = scrub_urls(&message) + && let Some(user) = message.from() + && let Some(caps) = MATCH_REGEX.captures(&text) + { let text = text.replace(&caps["shorts"], "watch?v="); - let text = format!( - "{}: {}", - link(user.url().as_str(), &user.full_name()), - text - ); + let text = format!("{}: {}", link(user.url().as_str(), &user.full_name()), text); let _del = bot.delete_message(message.chat.id, message.id).await; bot.try_reply(message, text).await?; }