diff --git a/deps.edn b/deps.edn index 6f762a6..d5e03c0 100644 --- a/deps.edn +++ b/deps.edn @@ -8,7 +8,7 @@ org.fudo/fudo-clojure { :git/url "https://git.fudo.org/fudo-public/fudo-clojure.git" - :sha "1312a2805616b265ed4c89ef6216f300a7a7a155" + :sha "9775e301714b785c27b23664b0d89e379bdca27e" } } :aliases { diff --git a/src/bebot/logger.clj b/src/bebot/logger.clj new file mode 100644 index 0000000..708e7f8 --- /dev/null +++ b/src/bebot/logger.clj @@ -0,0 +1,28 @@ +(ns bebot.logger + (:require [bebot.api.client :as client] + [bebot.api.channel :as chan] + [bebot.client :refer [connect]] + [fudo-clojure.result :refer [let-result unwrap success]] + [fudo-clojure.logging :as log])) + +(defrecord MatterLogger [channel verbosity] + log/Logger + (debug! [_ msg] (when (= :info @verbosity + (chan/send-post! channel (str "DEBUG: " msg))))) + (warn! [_ msg] (throw (ex-info "Not Implemented!" {}))) + (error! [_ msg] (throw (ex-info "Not Implemented!" {}))) + (fatal! [_ msg] (throw (ex-info "Not Implemented!" {}))) + + (info! [_ msg] (when (= :info @verbosity) + (chan/send-post! channel msg))) + (notify! [_ msg] (when (or (= :notify @verbosity) + (= :info @verbosity)) + (chan/send-post! channel msg))) + (alert! [_ msg] (chan/send-post! channel msg))) + +(defn make-logger [url access-token channel-id & {:keys [verbosity] + :or {verbosity :info}}] + (unwrap + (let-result [conn (connect url access-token) + chan (client/open-channel! conn channel-id)] + (success (->MatterLogger chan (atom verbosity))))))