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..6c2a2b3 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,15 @@ (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 #"[^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`" [media f]