mirror of
https://github.com/kiranshila/Doplarr.git
synced 2026-07-29 08:42:32 -04:00
52 lines
1.5 KiB
Clojure
52 lines
1.5 KiB
Clojure
(ns doplarr.backends.radarr.impl
|
|
(:require
|
|
[config.core :refer [env]]
|
|
[doplarr.utils :as utils]
|
|
[doplarr.backends.radarr.specs :as specs]
|
|
[clojure.core.async :as a]
|
|
[clojure.spec.alpha :as spec]
|
|
[doplarr.backends.specs :as bs]))
|
|
|
|
(def base-url (delay (str (:radarr-url env) "/api/v3")))
|
|
(def api-key (delay (:radarr-api env)))
|
|
|
|
(defn GET [endpoint & [params]]
|
|
(utils/http-request :get (str @base-url endpoint) @api-key params))
|
|
|
|
(defn POST [endpoint & [params]]
|
|
(utils/http-request :post (str @base-url endpoint) @api-key params))
|
|
|
|
(def rootfolder (delay (a/<!! (utils/request-and-process-body GET #(get (first %) "path") "/rootfolder"))))
|
|
|
|
(defn quality-profiles []
|
|
(utils/request-and-process-body
|
|
GET
|
|
#(into [] (map utils/process-profile %))
|
|
"/qualityProfile"))
|
|
|
|
(defn status [result]
|
|
(cond
|
|
(and (:has-file result)
|
|
(:is-available result)
|
|
(:monitored result)) :available
|
|
(and (not (:has-file result))
|
|
(:is-available result)
|
|
(:monitored result)) :processing
|
|
:else nil))
|
|
(spec/fdef status
|
|
:args (spec/cat :result ::bs/result)
|
|
:ret ::bs/status)
|
|
|
|
(defn request-payload [result quality-profile-id]
|
|
(-> result
|
|
(select-keys [:title :tmdb-id])
|
|
(assoc :quality-profile-id quality-profile-id
|
|
:monitored true
|
|
:root-folder-path @rootfolder
|
|
:add-options {:search-for-movie true})))
|
|
(spec/fdef request-payload
|
|
:args (spec/cat :result ::bs/result
|
|
:quality-profile-id ::bs/quality-profile-id)
|
|
:ret ::specs/payload)
|
|
|