Merge pull request #44 from DomainDrivenArchitecture/refactor_twitter
mastodon bug fix & refactor twitter-apimaster
commit
3576ca2352
@ -0,0 +1,48 @@
|
|||||||
|
(ns mastodon-bot.twitter-api
|
||||||
|
(:require
|
||||||
|
[clojure.spec.alpha :as s]
|
||||||
|
[clojure.spec.test.alpha :as st]
|
||||||
|
[orchestra.core :refer-macros [defn-spec]]
|
||||||
|
[clojure.string :as string]
|
||||||
|
["twitter" :as twitter]
|
||||||
|
[mastodon-bot.infra :as infra]
|
||||||
|
))
|
||||||
|
|
||||||
|
(s/def ::consumer_key string?)
|
||||||
|
(s/def ::consumer_secret string?)
|
||||||
|
(s/def ::access_token_key string?)
|
||||||
|
(s/def ::access_token_secret string?)
|
||||||
|
(s/def ::access-keys (s/keys :req-un [::consumer_key ::consumer_secret ::access_token_key
|
||||||
|
::access_token_secret]))
|
||||||
|
|
||||||
|
(s/def ::include-rts? boolean?)
|
||||||
|
(s/def ::include-replies? boolean?)
|
||||||
|
(s/def ::account string?)
|
||||||
|
(s/def ::accounts (s/* ::account))
|
||||||
|
(def twitter-config? (s/keys :req-un [::access-keys ::include-rts? ::include-replies?]))
|
||||||
|
|
||||||
|
(defn strip-utm [news-link]
|
||||||
|
(first (string/split news-link #"\?utm")))
|
||||||
|
|
||||||
|
(defn-spec twitter-client any?
|
||||||
|
[twitter-config twitter-config?]
|
||||||
|
(let [{:keys [access-keys]} twitter-config]
|
||||||
|
(try
|
||||||
|
(twitter. (clj->js access-keys))
|
||||||
|
(catch js/Error e
|
||||||
|
(infra/exit-with-error
|
||||||
|
(str "failed to connect to Twitter: " (.-message e)))))))
|
||||||
|
|
||||||
|
(defn-spec user-timeline any?
|
||||||
|
[twitter-config twitter-config?
|
||||||
|
account ::account
|
||||||
|
callback fn?]
|
||||||
|
(let [{:keys [include-rts? include-replies?]} twitter-config]
|
||||||
|
(.get (twitter-client twitter-config)
|
||||||
|
"statuses/user_timeline"
|
||||||
|
#js {:screen_name account
|
||||||
|
:tweet_mode "extended"
|
||||||
|
:include_rts (boolean include-rts?)
|
||||||
|
:exclude_replies (not (boolean include-replies?))}
|
||||||
|
callback)))
|
||||||
|
|
Reference in New Issue