From 2b76a4c5bad4d3b285cdcfa73076d940a939dfb1 Mon Sep 17 00:00:00 2001 From: evazion Date: Tue, 30 Aug 2022 01:52:55 -0500 Subject: [PATCH] tumblr: fix exception when parsing subdomainless Tumblr URLs. Fix exception when a post has a Tumblr source without a subdomain, such as `https://tumblr.com`. --- app/logical/source/url/tumblr.rb | 2 +- test/unit/sources/tumblr_test.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/logical/source/url/tumblr.rb b/app/logical/source/url/tumblr.rb index 5073d7679..ab46e79a0 100644 --- a/app/logical/source/url/tumblr.rb +++ b/app/logical/source/url/tumblr.rb @@ -77,7 +77,7 @@ class Source::URL::Tumblr < Source::URL # http://data.tumblr.com/07e7bba538046b2b586433976290ee1f/tumblr_o3gg44HcOg1r9pi29o1_raw.jpg # https://40.media.tumblr.com/de018501416a465d898d24ad81d76358/tumblr_nfxt7voWDX1rsd4umo1_r23_1280.jpg # https://va.media.tumblr.com/tumblr_pgohk0TjhS1u7mrsl.mp4 - subdomain.ends_with?(".media") || subdomain.in?(%w[data media]) + subdomain&.ends_with?(".media") || subdomain&.in?(%w[data media]) end def variants diff --git a/test/unit/sources/tumblr_test.rb b/test/unit/sources/tumblr_test.rb index 35db0c9d5..31146de93 100644 --- a/test/unit/sources/tumblr_test.rb +++ b/test/unit/sources/tumblr_test.rb @@ -259,5 +259,15 @@ module Sources assert_nil(Source::URL.page_url("https://octrain1020.tumblr.com/")) end end + + should "parse Tumblr URLs correctly" do + refute(Source::URL.image_url?("https://tumblr.com")) + refute(Source::URL.image_url?("https://www.tumblr.com")) + refute(Source::URL.image_url?("https://yogurtmedia.tumblr.com/post/45732863347")) + + assert(Source::URL.image_url?("http://data.tumblr.com/07e7bba538046b2b586433976290ee1f/tumblr_o3gg44HcOg1r9pi29o1_raw.jpg")) + assert(Source::URL.image_url?("https://40.media.tumblr.com/de018501416a465d898d24ad81d76358/tumblr_nfxt7voWDX1rsd4umo1_r23_1280.jpg")) + assert(Source::URL.image_url?("https://va.media.tumblr.com/tumblr_pgohk0TjhS1u7mrsl.mp4")) + end end end