From 4e2648280dd362ad7e81d4cd8264eb66c18d3b72 Mon Sep 17 00:00:00 2001 From: Butter Cat Date: Sat, 30 Mar 2024 18:36:28 -0400 Subject: [PATCH 1/3] Fix multiple Reddit preview links becoming the same --- src/utils.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/utils.rs b/src/utils.rs index aa992d6..ba6d364 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -880,11 +880,11 @@ static REDDIT_EMOJI_REGEX: Lazy = Lazy::new(|| Regex::new(r"https?://(www // Rewrite Reddit links to Redlib in body of text pub fn rewrite_urls(input_text: &str) -> String { - let text1 = + let mut text1 = // Rewrite Reddit links to Redlib REDDIT_REGEX.replace_all(input_text, r#"href="/"#) .to_string(); - let text1 = REDDIT_EMOJI_REGEX + text1 = REDDIT_EMOJI_REGEX .replace_all(&text1, format_url(REDDIT_EMOJI_REGEX.find(&text1).map(|x| x.as_str()).unwrap_or_default())) .to_string() // Remove (html-encoded) "\" from URLs. @@ -893,9 +893,15 @@ pub fn rewrite_urls(input_text: &str) -> String { // Rewrite external media previews to Redlib if REDDIT_PREVIEW_REGEX.is_match(&text1) { - REDDIT_PREVIEW_REGEX - .replace_all(&text1, format_url(REDDIT_PREVIEW_REGEX.find(&text1).map(|x| x.as_str()).unwrap_or_default())) - .to_string() + loop { + if REDDIT_PREVIEW_REGEX.find(&text1) == None { + return text1; + } else { + text1 = REDDIT_PREVIEW_REGEX + .replace(&text1, format_url(REDDIT_PREVIEW_REGEX.find(&text1).map(|x| x.as_str()).unwrap_or_default())) + .to_string() + } + }; } else { text1 } From 4f0b29f930f93bd54d8bbe0c752d838981c3c711 Mon Sep 17 00:00:00 2001 From: Butter Cat Date: Sat, 30 Mar 2024 18:53:46 -0400 Subject: [PATCH 2/3] Fix failing checks --- src/utils.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/utils.rs b/src/utils.rs index ba6d364..5977576 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -894,14 +894,14 @@ pub fn rewrite_urls(input_text: &str) -> String { // Rewrite external media previews to Redlib if REDDIT_PREVIEW_REGEX.is_match(&text1) { loop { - if REDDIT_PREVIEW_REGEX.find(&text1) == None { + if REDDIT_PREVIEW_REGEX.find(&text1).is_none() { return text1; } else { text1 = REDDIT_PREVIEW_REGEX - .replace(&text1, format_url(REDDIT_PREVIEW_REGEX.find(&text1).map(|x| x.as_str()).unwrap_or_default())) - .to_string() + .replace(&text1, format_url(REDDIT_PREVIEW_REGEX.find(&text1).map(|x| x.as_str()).unwrap_or_default())) + .to_string() } - }; + } } else { text1 } From 858299c861125f1ceca065b0c1457eedb731670a Mon Sep 17 00:00:00 2001 From: Butter Cat Date: Sun, 7 Apr 2024 11:24:18 -0400 Subject: [PATCH 3/3] Add test for rewriting multiple preview links --- src/utils.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/utils.rs b/src/utils.rs index 5977576..d45e6b2 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1154,3 +1154,10 @@ async fn test_fetching_ws() { assert!(post.ws_url.starts_with("wss://k8s-lb.wss.redditmedia.com/link/")); } } + +#[test] +fn test_rewriting_image_links() { + let input = r#"

https://preview.redd.it/zq21ggkj2xo31.png?width=2560&format=png&auto=webp&s=539d8050628ec1190cac26468fe99cc66b6071ab

https://preview.redd.it/vty9ocij2xo31.png?width=2560&format=png&auto=webp&s=fc7c7ef993a5e9ef656d5f5d9cf8290a0a1df877

https://preview.redd.it/bdfdxkjj2xo31.png?width=2560&format=png&auto=webp&s=d0fa420ece27605e882e89cb4711d75d774322ac

caption 1

"#; + let output = r#"

/preview/pre/zq21ggkj2xo31.png?width=2560&format=png&auto=webp&s=539d8050628ec1190cac26468fe99cc66b6071ab

/preview/pre/vty9ocij2xo31.png?width=2560&format=png&auto=webp&s=fc7c7ef993a5e9ef656d5f5d9cf8290a0a1df877

/preview/pre/bdfdxkjj2xo31.png?width=2560&format=png&auto=webp&s=d0fa420ece27605e882e89cb4711d75d774322ac

caption 1

"#; + assert_eq!(rewrite_urls(input), output); +}