From 17fb34922b896185aeab062da57bd453e314d822 Mon Sep 17 00:00:00 2001 From: evazion Date: Tue, 11 Jan 2022 15:03:48 -0600 Subject: [PATCH] nijie: fix failure to fetch source data due to change in login system. Nijie changed their login system so that now there are two cookies that need to be remembered: NIJIEIJIEID, and nijie_tok. --- app/logical/sources/strategies/nijie.rb | 5 +++-- test/unit/sources/nijie_test.rb | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/logical/sources/strategies/nijie.rb b/app/logical/sources/strategies/nijie.rb index cb554cdb5..9ace05474 100644 --- a/app/logical/sources/strategies/nijie.rb +++ b/app/logical/sources/strategies/nijie.rb @@ -226,13 +226,14 @@ module Sources def client return nil if cached_session_cookie.nil? - http.cookies(NIJIEIJIEID: cached_session_cookie, R18: 1) + http.cookies(R18: 1, **cached_session_cookie) end def http super.timeout(60).use(retriable: { max_retries: 20 }) end + # { "NIJIEIJIEID" => "5ca3f816c0c1f3e647940b08b8ab7a45", "nijie_tok" => } def cached_session_cookie Cache.get("nijie-session-cookie", 60.minutes, skip_nil: true) do session_cookie @@ -258,7 +259,7 @@ module Sources response = http.post("https://nijie.info/login_int.php", form: form) if response.status == 200 - response.cookies.select { |c| c.name == "NIJIEIJIEID" }.compact.first + response.cookies.cookies.map { |cookie| [cookie.name, cookie.value] }.to_h else DanbooruLogger.info "Nijie login failed (#{url}, #{response.status})" nil diff --git a/test/unit/sources/nijie_test.rb b/test/unit/sources/nijie_test.rb index 3ca993504..54295c256 100644 --- a/test/unit/sources/nijie_test.rb +++ b/test/unit/sources/nijie_test.rb @@ -314,8 +314,8 @@ module Sources should "clear the cached cookie after failing to fetch the data" do site = Sources::Strategies.find("https://nijie.info/view.php?id=203688") - Cache.put("nijie-session-cookie", HTTP::Cookie.new(name: "NIJIEIJIEID", value: "fake", domain: "nijie.info", path: "/")) - assert_equal("fake", site.cached_session_cookie.value) + Cache.put("nijie-session-cookie", { "NIJIEIJIEID" => "fake", "nijie_tok" => "fake" }) + assert_equal({ "NIJIEIJIEID" => "fake", "nijie_tok" => "fake" }, site.cached_session_cookie) assert_equal([], site.image_urls) assert_nil(Cache.get("nijie-session-cookie"))