From 6b9ee104f347b911599dbf60395b4c23802fd387 Mon Sep 17 00:00:00 2001 From: Kiran Shila Date: Sat, 21 Aug 2021 17:23:57 -0700 Subject: [PATCH] Started overseerr integration, running into problems with URL encoding --- src/doplarr/core.clj | 1 + src/doplarr/overseerr.clj | 84 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 src/doplarr/overseerr.clj diff --git a/src/doplarr/core.clj b/src/doplarr/core.clj index c5fd00a..5efcbec 100644 --- a/src/doplarr/core.clj +++ b/src/doplarr/core.clj @@ -124,6 +124,7 @@ {:id (:id interaction) :type (interaction-types (:type interaction)) :token (:token interaction) + :user-id (s/select-one [:member :user :id] interaction) :payload {:component-type (component-types (get-in interaction [:data :component-type])) :component-id (s/select-one [:data :custom-id] interaction) diff --git a/src/doplarr/overseerr.clj b/src/doplarr/overseerr.clj new file mode 100644 index 0000000..8a6f00a --- /dev/null +++ b/src/doplarr/overseerr.clj @@ -0,0 +1,84 @@ +(ns doplarr.overseerr + (:require + [com.rpl.specter :as s] + [clojure.core.async :as a] + [config.core :refer [env]] + [doplarr.arr-utils :as utils])) + +(def base-url (delay (str (:overseerr-url env) "/api/v1"))) +(def api-key (delay (:overseerr-api env))) +(def rootfolder (delay (utils/rootfolder @base-url @api-key))) + +; Test if overseerr is enabled +; Find discord user in overseer +; Somehow determine if the user is able to actually perform the request +; Feed that information back to to the bot +; Make screen for permission error + +(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)) + +(defn all-users [] + (let [chan (a/promise-chan)] + (a/pipeline + 1 + chan + (map (comp :results :body)) + (GET "/user")) + chan)) + +(defn user-discord-id [id] + (let [chan (a/promise-chan)] + (a/pipeline + 1 + chan + (map (comp :discordId :body)) + (GET (str "/user/" id "/settings/notifications"))) + chan)) + +(defn discord-users [] + (a/go-loop [ids (map :id (a/