From 5b8402751c304366e0959bb7c9800f5b18873a47 Mon Sep 17 00:00:00 2001 From: nonamethanks Date: Mon, 9 May 2022 18:38:38 +0200 Subject: [PATCH] Furaffinity: fix uploads for non-ascii image urls Use Addressable::URI, which supports non-ascii urls. --- app/logical/source/extractor/furaffinity.rb | 2 +- test/unit/sources/furaffinity_test.rb | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/logical/source/extractor/furaffinity.rb b/app/logical/source/extractor/furaffinity.rb index f0a50ffc6..40e733d23 100644 --- a/app/logical/source/extractor/furaffinity.rb +++ b/app/logical/source/extractor/furaffinity.rb @@ -19,7 +19,7 @@ class Source::Extractor download_button = html_response&.css(".submission-content .auto_link .button").to_a.find { |el| el.text == "Download" } partial_image = download_button&.[]("href") return [] unless partial_image.present? - [URI.join("https://d.furaffinity.net", partial_image).to_s].compact + [Addressable::URI.join("https://d.furaffinity.net", partial_image).to_s].compact end end diff --git a/test/unit/sources/furaffinity_test.rb b/test/unit/sources/furaffinity_test.rb index 17bd5cc34..1a91acc8d 100644 --- a/test/unit/sources/furaffinity_test.rb +++ b/test/unit/sources/furaffinity_test.rb @@ -42,6 +42,13 @@ module Sources strategy_should_work("https://www.furaffinity.net/view/3404111", deleted: true, profile_url: nil) end + context "A furaffinity post with non-ascii image url" do + strategy_should_work( + "https://www.furaffinity.net/view/20762907/", + image_urls: ["https://d.furaffinity.net/art/fhedge/1470365580/1470365580.fhedge_ミストランサーまとめアートボード_1.jpg"] + ) + end + should "Parse Furaffinity URLs correctly" do assert(Source::URL.image_url?("https://d.furaffinity.net/art/iwbitu/1650222955/1650222955.iwbitu_yubi.jpg")) assert(Source::URL.page_url?("https://www.furaffinity.net/view/46821705/"))