From 2317fbf4b74cebea15d9009fdf6c4baf43cc53c9 Mon Sep 17 00:00:00 2001 From: Ben Richards Date: Tue, 6 Feb 2024 21:53:10 +0100 Subject: [PATCH 1/3] Bug: Fix for Query with Special Characters Failing Against Overseer - Modified Overseerr call to encode the query parameter - Added new util function, url-encode-illegal-characters (sources from hato.middleware) but with URL encoding all non alpha-numeric characters. --- src/doplarr/backends/overseerr.clj | 2 +- src/doplarr/utils.clj | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/doplarr/backends/overseerr.clj b/src/doplarr/backends/overseerr.clj index 7219e70..25cb696 100644 --- a/src/doplarr/backends/overseerr.clj +++ b/src/doplarr/backends/overseerr.clj @@ -10,7 +10,7 @@ (utils/request-and-process-body impl/GET (partial impl/process-search-result type) - (str "/search?query=" term)))) + (str "/search?query=" (utils/url-encode-illegal-characters term))))) ; In Overseerr, the only additional option we'll need is which season, ; if the request type is a series diff --git a/src/doplarr/utils.clj b/src/doplarr/utils.clj index 7d4a1e8..77984a9 100644 --- a/src/doplarr/utils.clj +++ b/src/doplarr/utils.clj @@ -8,6 +8,7 @@ [doplarr.state :as state] [fmnoise.flow :as flow :refer [else then]] [hato.client :as hc] + [hato.middleware :as hm] [taoensso.timbre :refer [fatal trace]] [clojure.set :as set])) @@ -84,6 +85,17 @@ (str/trim (subs % 0 (- (count %) 2))) (str/trim %))))) +(defn url-encode-illegal-characters + "Takes a raw url path or query and url-encodes any illegal characters. + Minimizes ambiguity by encoding space to %20." + [path-or-query] + (when path-or-query + (-> path-or-query + (str/replace " " "%20") + (str/replace + #"[^a-zA-Z0-9]" + hm/url-encode)))) + (defn media-fn "Resolves a function `f` in the backend namespace matching the available backend for a given `media`" [media f] From 958434627b6293fd20bc20b01bc4edf5015d87f4 Mon Sep 17 00:00:00 2001 From: Ben Richards Date: Tue, 6 Feb 2024 23:29:56 +0100 Subject: [PATCH 2/3] Fixing Double Encoding Issue - Re-ordered string replacement to fix double encoding --- config.edn | 15 ++++++--------- src/doplarr/utils.clj | 6 ++---- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/config.edn b/config.edn index 8a56513..28ed2aa 100644 --- a/config.edn +++ b/config.edn @@ -1,10 +1,8 @@ -{:sonarr/url "" - :sonarr/api "" - :radarr/url "" - :radarr/api "" - ; :overseerr/url "" - ; :overseerr/api "" - :discord/token "" +{ + :overseerr/url "http://192.168.1.200:9002" + :overseerr/api "MTcwNDMwMDUwNTE5MjE5ZTQ4YjAxLWE4N2ItNDIxYS04OWVhLTU2ZGJmMmViYjM0MA==" + :discord/token "MTIwNDE1MDcyNDI3NTk5NDY1NA.GaK00w.LMWbegi1-5TNJxd3CVCjfvBeEJXT6mKKwtPXC0" + :overseerr/default-id 1 ; -- Optional Settings ; :partial-seasons false ; :sonarr/quality-profile "" @@ -14,6 +12,5 @@ ; :sonarr/rootfolder "" ; :sonarr/season-folders true ; :discord/max-results 10 - ; :overseerr/default-id 1 - ; :log-level :trace + :log-level :trace } diff --git a/src/doplarr/utils.clj b/src/doplarr/utils.clj index 77984a9..6c2a2b3 100644 --- a/src/doplarr/utils.clj +++ b/src/doplarr/utils.clj @@ -91,10 +91,8 @@ [path-or-query] (when path-or-query (-> path-or-query - (str/replace " " "%20") - (str/replace - #"[^a-zA-Z0-9]" - hm/url-encode)))) + (str/replace #"[^a-zA-Z0-9]" hm/url-encode) + (str/replace "+" "%20")))) (defn media-fn "Resolves a function `f` in the backend namespace matching the available backend for a given `media`" From 3a8b23e3d75713762b26cc478223d641521a2a5e Mon Sep 17 00:00:00 2001 From: Ben Richards Date: Tue, 6 Feb 2024 23:35:39 +0100 Subject: [PATCH 3/3] Opsy - Revering personal configuration...one should not code while high --- config.edn | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/config.edn b/config.edn index 28ed2aa..8a56513 100644 --- a/config.edn +++ b/config.edn @@ -1,8 +1,10 @@ -{ - :overseerr/url "http://192.168.1.200:9002" - :overseerr/api "MTcwNDMwMDUwNTE5MjE5ZTQ4YjAxLWE4N2ItNDIxYS04OWVhLTU2ZGJmMmViYjM0MA==" - :discord/token "MTIwNDE1MDcyNDI3NTk5NDY1NA.GaK00w.LMWbegi1-5TNJxd3CVCjfvBeEJXT6mKKwtPXC0" - :overseerr/default-id 1 +{:sonarr/url "" + :sonarr/api "" + :radarr/url "" + :radarr/api "" + ; :overseerr/url "" + ; :overseerr/api "" + :discord/token "" ; -- Optional Settings ; :partial-seasons false ; :sonarr/quality-profile "" @@ -12,5 +14,6 @@ ; :sonarr/rootfolder "" ; :sonarr/season-folders true ; :discord/max-results 10 - :log-level :trace + ; :overseerr/default-id 1 + ; :log-level :trace }