From 3fff7f624c052cae5d84e3ddea57fc32f2f54eca Mon Sep 17 00:00:00 2001 From: Kiran Shila Date: Sat, 25 Sep 2021 18:24:47 -0700 Subject: [PATCH] Spec-ing out everything and codifying interfaces WIP --- deps.edn | 7 +- src/doplarr/arr_utils.clj | 45 ----------- .../overseerr/impl.clj} | 2 +- src/doplarr/backends/radarr/impl.clj | 74 +++++++++++++++++++ src/doplarr/backends/radarr/specs.clj | 9 +++ .../{sonarr.clj => backends/sonarr/impl.clj} | 4 +- src/doplarr/backends/sonarr/specs.clj | 2 + src/doplarr/backends/specs.clj | 14 ++++ src/doplarr/radarr.clj | 61 --------------- src/doplarr/specs.clj | 9 +++ src/doplarr/utils.clj | 58 +++++++++++++++ 11 files changed, 174 insertions(+), 111 deletions(-) delete mode 100644 src/doplarr/arr_utils.clj rename src/doplarr/{overseerr.clj => backends/overseerr/impl.clj} (99%) create mode 100644 src/doplarr/backends/radarr/impl.clj create mode 100644 src/doplarr/backends/radarr/specs.clj rename src/doplarr/{sonarr.clj => backends/sonarr/impl.clj} (98%) create mode 100644 src/doplarr/backends/sonarr/specs.clj create mode 100644 src/doplarr/backends/specs.clj delete mode 100644 src/doplarr/radarr.clj create mode 100644 src/doplarr/specs.clj create mode 100644 src/doplarr/utils.clj diff --git a/deps.edn b/deps.edn index 175a3de..1472a06 100644 --- a/deps.edn +++ b/deps.edn @@ -5,11 +5,14 @@ yogthos/config {:mvn/version "1.1.8"} com.rpl/specter {:mvn/version "1.1.3"} ch.qos.logback/logback-classic {:mvn/version "1.2.5"} - org.suskalo/discljord {:mvn/version "1.3.0-SNAPSHOT"} + org.suskalo/discljord {:mvn/version "1.3.0-RC2"} org.clojure/core.async {:mvn/version "1.3.618"} cheshire/cheshire {:mvn/version "5.10.1"} fmnoise/flow {:mvn/version "4.1.0"} - hato/hato {:mvn/version "0.8.2"}} + hato/hato {:mvn/version "0.8.2"} + camel-snake-kebab/camel-snake-kebab {:mvn/version "0.4.2"} + org.clojure/alpha.spec {:git/url "https://github.com/clojure/spec-alpha2.git" + :sha "c087ded910b3532a938b37e853df79fc3b9c48c1"}} :jvm-opts ["-Dconfig=config.edn"] diff --git a/src/doplarr/arr_utils.clj b/src/doplarr/arr_utils.clj deleted file mode 100644 index a5e03fa..0000000 --- a/src/doplarr/arr_utils.clj +++ /dev/null @@ -1,45 +0,0 @@ -(ns doplarr.arr-utils - (:require - [clojure.tools.logging :as log] - [clojure.core.async :as a] - [fmnoise.flow :as flow :refer [then else]] - [hato.client :as hc])) - -(defn fatal-error [ex] - (log/fatal ex) - #_(System/exit -1)) - -(defn deep-merge [a & maps] - (if (map? a) - (apply merge-with deep-merge a maps) - (apply merge-with deep-merge maps))) - -(defn http-request [method url key & [params]] - (let [chan (a/chan) - put-close #(do - (a/put! chan %) - (a/close! chan))] - (hc/request - (deep-merge - {:method method - :url url - :as :json - :async? true - :headers {"X-API-Key" key}} - params) - put-close - put-close) - chan)) - -(defn rootfolder [base-url key] - (a/go - (->> (a/> (a/> (a/> (:body %) - (map utils/quality-profile-data))) - (else utils/fatal-error)))) - -(defn request [movie & {:keys [profile-id]}] - (a/go - (->> (a/kebab-case-keyword m)) + +(defn to-camel [m] + (cske/transform-keys csk/->camelCaseString m)) + +(defn process-search-result [result] + (-> result + (select-keys ["title" "year" "id" "tvdbId" "tmdbId"]) + from-camel)) + +(defn process-quality-profile [profile] + (->> (select-keys profile ["id" "name"]) + from-camel)) + +(defn request-and-process-body [request-fn process-fn & request-args] + (a/go + (->> (a/