chbrown / twttr

Twitter API client for Clojure supporting REST and Streaming endpoints
35 stars 11 forks source link

Simple Twitter banner update throwing exception, but still updates banner #12

Open sasacocic opened 2 years ago

sasacocic commented 2 years ago

I'm trying to update my own twitter banner, but this exception keeps getting thrown. I've tried multiple different things, but I'm not convinced it's my code anymore. It's totally possible I'm making some mistake still. I've included what I think is a very simple call to the api that isn't working.

Ideally I could make the call without the exception popping up.

EDIT: also I know the code is partly working because it's still updating my Twitter banner.


(twitter-api/account-update-profile-banner
credz 
:params {:banner (.encodeToString
(Base64/getEncoder) (:body (client/get "https://pbs.twimg.com/profile_banners/1213616925156052993/1632387377/1500x500" {:as :byte-array})) )})
1. Unhandled java.lang.ClassCastException
   class java.lang.String cannot be cast to class clojure.lang.IObj
   (java.lang.String is in module java.base of loader 'bootstrap';
   clojure.lang.IObj is in unnamed module of loader 'app')

                  core.clj:  219  clojure.core/with-meta
                  core.clj:  219  clojure.core/with-meta
            middleware.clj:   49  twttr.middleware/wrap-body/body-parser
              deferred.clj:  839  manifold.deferred/fn/chain-
              deferred.clj:  809  manifold.deferred/fn/subscribe/fn
              deferred.clj:  219  manifold.deferred.Listener/onSuccess
              deferred.clj:  398  manifold.deferred.Deferred/fn/fn
                  AFn.java:   22  clojure.lang.AFn/run
             Executor.java:  318  io.aleph.dirigiste.Executor$3/run
             Executor.java:   62  io.aleph.dirigiste.Executor$Worker$1/run
              executor.clj:   44  manifold.executor/thread-factory/reify/f
                  AFn.java:   22  clojure.lang.AFn/run
               Thread.java:  829  java.lang.Thread/run
chbrown commented 2 years ago

Huh. Makes sense that the update works, because that error is coming from the response handler (which is expecting the response to be map, but apparently it's a string). I can't imagine there's anything special about the POST account/update_profile_banner endpoint, so, weird.

sasacocic commented 2 years ago

I've done other api calls without issue like

(twitter-api/user-settings
(twittier-api/users-profile-banner

EDIT: I wrote this seeing what would happen. All of the work except the account-update-profile-banner

(defn testing [tok sec]
  (let [credentials (twitter-auth/map->UserCredentials {:user-token tok :user-token-secret sec :consumer-key "key" :consumer-secret "secret"})
        image_location "https://pbs.twimg.com/profile_banners/1213616925156052993/1632396483/1500x500"
        c1 (twitter-api/account-settings  credentials)
        c2 (twitter-api/users-profile-banner credentials :params {:screen_name "SasaCocic"})
        c3 (twitter-api/followers-list credentials :params {:screen_name "SasaCocic"})
        ;; c4 - causes an the error
        c4 (twitter-api/account-update-profile-banner credentials :params {:banner (.encodeToString (Base64/getEncoder) (:body (client/get "https://pbs.twimg.com/profile_banners/1213616925156052993/1632396483/1500x500" {:as :byte-array}) )) })
        ]

    {:c1 c1
     :c2 c2
     :c3 c3
     :c4 4})

  )

Here's what I'm seeing from lein deps :tree-data

lein deps :tree-data                          sasacocic@Sasas-Shiny-Mac
Possibly confusing dependencies found:
[compojure "1.6.2"] -> [ring/ring-codec "1.1.2"]
 overrides
[ring/ring-jetty-adapter "1.9.1"] -> [ring/ring-servlet "1.9.1"] -> [ring/ring-core "1.9.1"] -> [ring/ring-codec "1.1.3"]
 and
[ring/ring-jetty-adapter "1.9.1"] -> [ring/ring-core "1.9.1"] -> [ring/ring-codec "1.1.3"]
 and
[ring/ring-core "1.9.1"] -> [ring/ring-codec "1.1.3"]

Consider using these exclusions:
[ring/ring-jetty-adapter "1.9.1" :exclusions [ring/ring-codec]]
[ring/ring-core "1.9.1" :exclusions [ring/ring-codec]]

[ring/ring-core "1.9.1"] -> [commons-io "2.6"]
 overrides
[clj-http "3.12.3"] -> [commons-io "2.8.0" :exclusions [org.clojure/clojure]]

Consider using these exclusions:
[clj-http "3.12.3" :exclusions [commons-io]]

[ring-logger "1.0.1"] -> [org.clojure/tools.logging "0.3.1"]
 overrides
[twttr "3.2.3"] -> [aleph "0.4.6"] -> [org.clojure/tools.logging "0.4.1" :exclusions [org.clojure/clojure]]
 and
[seancorfield/next.jdbc "1.0.424"] -> [org.clojure/java.data "1.0.64"] -> [org.clojure/tools.logging "0.6.0"]
 and
[twttr "3.2.3"] -> [org.clojure/tools.logging "0.4.1"]

Consider using these exclusions:
[twttr "3.2.3" :exclusions [org.clojure/tools.logging]]
[seancorfield/next.jdbc "1.0.424" :exclusions [org.clojure/tools.logging]]

[clj-oauth "1.5.5"] -> [commons-codec "1.8"]
 overrides
[twttr "3.2.3"] -> [clj-oauth "1.5.5"] -> [clj-http "2.0.1"] -> [org.apache.httpcomponents/httpmime "4.5" :exclusions [org.clojure/clojure]] -> [org.apache.httpcomponents/httpclient "4.5"] -> [commons-codec "1.9"]
 and
[buddy/buddy-auth "2.2.0"] -> [funcool/cuerdas "2.2.0"] -> [org.clojure/clojurescript "1.10.520"] -> [com.cognitect/transit-clj "0.8.309" :exclusions [org.clojure/clojure]] -> [com.cognitect/transit-java "0.8.332"] -> [commons-codec "1.10"]
 and
[twttr "3.2.3"] -> [clj-oauth "1.5.5"] -> [clj-http "2.0.1"] -> [org.apache.httpcomponents/httpclient "4.5" :exclusions [org.clojure/clojure]] -> [commons-codec "1.9"]
 and
[clj-oauth "1.5.5"] -> [clj-http "2.0.1"] -> [org.apache.httpcomponents/httpmime "4.5" :exclusions [org.clojure/clojure]] -> [org.apache.httpcomponents/httpclient "4.5"] -> [commons-codec "1.9"]
 and
[ring/ring-jetty-adapter "1.9.1"] -> [ring/ring-servlet "1.9.1"] -> [ring/ring-core "1.9.1"] -> [ring/ring-codec "1.1.3"] -> [commons-codec "1.15"]
 and
[clj-http "3.12.3"] -> [org.apache.httpcomponents/httpmime "4.5.13" :exclusions [org.clojure/clojure]] -> [org.apache.httpcomponents/httpclient "4.5.13"] -> [commons-codec "1.11"]
 and
[clj-http "3.12.3"] -> [org.apache.httpcomponents/httpasyncclient "4.1.4" :exclusions [org.clojure/clojure]] -> [org.apache.httpcomponents/httpclient "4.5.6"] -> [commons-codec "1.10"]
 and
[clj-http "3.12.3"] -> [org.apache.httpcomponents/httpclient-cache "4.5.13" :exclusions [org.clojure/clojure]] -> [org.apache.httpcomponents/httpclient "4.5.13"] -> [commons-codec "1.11"]
 and
[twttr "3.2.3"] -> [clj-oauth "1.5.5"] -> [clj-http "2.0.1"] -> [commons-codec "1.10" :exclusions [org.clojure/clojure]]
 and
[clj-oauth "1.5.5"] -> [clj-http "2.0.1"] -> [org.apache.httpcomponents/httpclient "4.5" :exclusions [org.clojure/clojure]] -> [commons-codec "1.9"]
 and
[buddy/buddy-auth "2.2.0"] -> [buddy/buddy-sign "3.1.0"] -> [buddy/buddy-core "1.6.0"] -> [commons-codec "1.12"]
 and
[ring/ring-jetty-adapter "1.9.1"] -> [ring/ring-core "1.9.1"] -> [ring/ring-codec "1.1.3"] -> [commons-codec "1.15"]
 and
[ring/ring-json "0.5.0"] -> [ring/ring-core "1.7.1"] -> [ring/ring-codec "1.1.1"] -> [commons-codec "1.11"]
 and
[compojure "1.6.2"] -> [ring/ring-core "1.8.1"] -> [ring/ring-codec "1.1.2"] -> [commons-codec "1.11"]
 and
[clj-http "3.12.3"] -> [org.apache.httpcomponents/httpclient "4.5.13" :exclusions [org.clojure/clojure]] -> [commons-codec "1.11"]
 and
[clj-oauth "1.5.5"] -> [clj-http "2.0.1"] -> [commons-codec "1.10" :exclusions [org.clojure/clojure]]
 and
[buddy/buddy-hashers "1.4.0"] -> [buddy/buddy-core "1.6.0"] -> [commons-codec "1.12"]
 and
[ring/ring-mock "0.4.0"] -> [ring/ring-codec "1.1.1"] -> [commons-codec "1.11"]
 and
[ring/ring-core "1.9.1"] -> [ring/ring-codec "1.1.3"] -> [commons-codec "1.15"]
 and
[compojure "1.6.2"] -> [ring/ring-codec "1.1.2"] -> [commons-codec "1.11"]
 and
[byte-transforms "0.1.4"] -> [commons-codec "1.10"]
 and
[clj-http "3.12.3"] -> [commons-codec "1.15" :exclusions [org.clojure/clojure]]

Consider using these exclusions:
[twttr "3.2.3" :exclusions [commons-codec]]
[buddy/buddy-auth "2.2.0" :exclusions [commons-codec]]
[clj-oauth "1.5.5" :exclusions [commons-codec]]
[ring/ring-jetty-adapter "1.9.1" :exclusions [commons-codec]]
[clj-http "3.12.3" :exclusions [commons-codec]]
[ring/ring-json "0.5.0" :exclusions [commons-codec]]
[compojure "1.6.2" :exclusions [commons-codec]]
[buddy/buddy-hashers "1.4.0" :exclusions [commons-codec]]
[ring/ring-mock "0.4.0" :exclusions [commons-codec]]
[ring/ring-core "1.9.1" :exclusions [commons-codec]]
[byte-transforms "0.1.4" :exclusions [commons-codec]]

[clj-oauth "1.5.5"] -> [org.bouncycastle/bcprov-jdk15on "1.54"]
 overrides
[buddy/buddy-auth "2.2.0"] -> [buddy/buddy-sign "3.1.0"] -> [buddy/buddy-core "1.6.0"] -> [org.bouncycastle/bcpkix-jdk15on "1.62"] -> [org.bouncycastle/bcprov-jdk15on "1.62"]
 and
[buddy/buddy-auth "2.2.0"] -> [buddy/buddy-sign "3.1.0"] -> [buddy/buddy-core "1.6.0"] -> [org.bouncycastle/bcprov-jdk15on "1.62"]
 and
[buddy/buddy-hashers "1.4.0"] -> [buddy/buddy-core "1.6.0"] -> [org.bouncycastle/bcpkix-jdk15on "1.62"] -> [org.bouncycastle/bcprov-jdk15on "1.62"]
 and
[buddy/buddy-hashers "1.4.0"] -> [buddy/buddy-core "1.6.0"] -> [org.bouncycastle/bcprov-jdk15on "1.62"]

Consider using these exclusions:
[buddy/buddy-auth "2.2.0" :exclusions [org.bouncycastle/bcprov-jdk15on]]
[buddy/buddy-hashers "1.4.0" :exclusions [org.bouncycastle/bcprov-jdk15on]]

[clj-oauth "1.5.5"] -> [org.bouncycastle/bcpkix-jdk15on "1.54"]
 overrides
[buddy/buddy-auth "2.2.0"] -> [buddy/buddy-sign "3.1.0"] -> [buddy/buddy-core "1.6.0"] -> [org.bouncycastle/bcpkix-jdk15on "1.62"]
 and
[buddy/buddy-hashers "1.4.0"] -> [buddy/buddy-core "1.6.0"] -> [org.bouncycastle/bcpkix-jdk15on "1.62"]

Consider using these exclusions:
[buddy/buddy-auth "2.2.0" :exclusions [org.bouncycastle/bcpkix-jdk15on]]
[buddy/buddy-hashers "1.4.0" :exclusions [org.bouncycastle/bcpkix-jdk15on]]

[ragtime "0.8.1"] -> [ragtime/jdbc "0.8.1"] -> [org.clojure/java.jdbc "0.5.8"]
 overrides
[com.layerware/hugsql "0.5.1"] -> [com.layerware/hugsql-adapter-clojure-java-jdbc "0.5.1"] -> [org.clojure/java.jdbc "0.7.10"]

Consider using these exclusions:
[com.layerware/hugsql "0.5.1" :exclusions [org.clojure/java.jdbc]]

[clj-http "3.12.3"] -> [potemkin "0.4.5" :exclusions [org.clojure/clojure]] -> [riddley "0.1.12"]
 overrides
[twttr "3.2.3"] -> [aleph "0.4.6"] -> [byte-streams "0.2.4"] -> [manifold "0.1.8"] -> [riddley "0.1.14"]
 and
[twttr "3.2.3"] -> [byte-streams "0.2.4"] -> [manifold "0.1.8"] -> [riddley "0.1.14"]
 and
[twttr "3.2.3"] -> [aleph "0.4.6"] -> [manifold "0.1.8"] -> [riddley "0.1.14"]

Consider using these exclusions:
[twttr "3.2.3" :exclusions [riddley]]

[com.layerware/hugsql "0.5.1"] -> [com.layerware/hugsql-core "0.5.1"] -> [org.clojure/tools.reader "1.3.2"]
 overrides
[com.taoensso/timbre "5.1.2"] -> [com.taoensso/encore "3.12.1"] -> [org.clojure/tools.reader "1.3.3"]

Consider using these exclusions:
[com.taoensso/timbre "5.1.2" :exclusions [org.clojure/tools.reader]]

[buddy/buddy-auth "2.2.0"] -> [funcool/cuerdas "2.2.0"] -> [org.clojure/clojurescript "1.10.520"] -> [com.google.javascript/closure-compiler-unshaded "v20180805"] -> [com.google.errorprone/error_prone_annotations "2.0.18"]
 overrides
[buddy/buddy-auth "2.2.0"] -> [funcool/cuerdas "2.2.0"] -> [org.clojure/clojurescript "1.10.520"] -> [com.google.javascript/closure-compiler-unshaded "v20180805"] -> [com.google.guava/guava "25.1-jre"] -> [com.google.errorprone/error_prone_annotations "2.1.3"]

Consider using these exclusions:
[buddy/buddy-auth "2.2.0" :exclusions [com.google.errorprone/error_prone_annotations]]

[buddy/buddy-auth "2.2.0"] -> [funcool/cuerdas "2.2.0"] -> [org.clojure/clojurescript "1.10.520"] -> [com.google.javascript/closure-compiler-unshaded "v20180805"] -> [com.google.code.findbugs/jsr305 "3.0.1"]
 overrides
[buddy/buddy-auth "2.2.0"] -> [funcool/cuerdas "2.2.0"] -> [org.clojure/clojurescript "1.10.520"] -> [com.google.javascript/closure-compiler-unshaded "v20180805"] -> [com.google.guava/guava "25.1-jre"] -> [com.google.code.findbugs/jsr305 "3.0.2"]

Consider using these exclusions:
[buddy/buddy-auth "2.2.0" :exclusions [com.google.code.findbugs/jsr305]]

{[abengoa/clj-stripe "1.0.4"] nil,
 [buddy/buddy-auth "2.2.0"]
 {[buddy/buddy-sign "3.1.0"] nil,
  [funcool/cuerdas "2.2.0"]
  {[org.clojure/clojurescript "1.10.520"]
   {[com.cognitect/transit-clj
     "0.8.309"
     :exclusions
     [[org.clojure/clojure]]]
    {[com.cognitect/transit-java "0.8.332"]
     {[org.msgpack/msgpack "0.6.12"]
      {[com.googlecode.json-simple/json-simple
        "1.1.1"
        :exclusions
        [[junit]]]
       nil,
       [org.javassist/javassist "3.18.1-GA"] nil}}},
    [com.google.javascript/closure-compiler-unshaded "v20180805"]
    {[args4j "2.0.26"] nil,
     [com.google.code.findbugs/jsr305 "3.0.1"] nil,
     [com.google.errorprone/error_prone_annotations "2.0.18"] nil,
     [com.google.guava/guava "25.1-jre"]
     {[com.google.j2objc/j2objc-annotations "1.1"] nil,
      [org.checkerframework/checker-qual "2.0.0"] nil,
      [org.codehaus.mojo/animal-sniffer-annotations "1.14"] nil},
     [com.google.javascript/closure-compiler-externs "v20180805"] nil,
     [com.google.jsinterop/jsinterop-annotations "1.0.0"] nil,
     [com.google.protobuf/protobuf-java "3.0.2"] nil},
    [org.clojure/google-closure-library "0.0-20170809-b9c14c6b"]
    {[org.clojure/google-closure-library-third-party
      "0.0-20170809-b9c14c6b"]
     nil},
    [org.mozilla/rhino "1.7R5"] nil}}},
 [buddy/buddy-hashers "1.4.0"]
 {[buddy/buddy-core "1.6.0"] {[net.i2p.crypto/eddsa "0.3.0"] nil},
  [clojurewerkz/scrypt "1.2.0"]
  {[com.lambdaworks/scrypt "1.4.0"] nil}},
 [byte-transforms "0.1.4"]
 {[net.jpountz.lz4/lz4 "1.3"] nil,
  [org.apache.commons/commons-compress "1.9"] nil,
  [org.xerial.snappy/snappy-java "1.1.1.7"] nil},
 [cheshire "5.10.0"]
 {[com.fasterxml.jackson.core/jackson-core "2.10.2"] nil,
  [com.fasterxml.jackson.dataformat/jackson-dataformat-cbor "2.10.2"]
  nil,
  [com.fasterxml.jackson.dataformat/jackson-dataformat-smile "2.10.2"]
  nil,
  [tigris "0.1.2"] nil},
 [clj-http "3.12.3"]
 {[org.apache.httpcomponents/httpasyncclient
   "4.1.4"
   :exclusions
   [[org.clojure/clojure]]]
  {[org.apache.httpcomponents/httpcore-nio "4.4.10"] nil},
  [org.apache.httpcomponents/httpclient-cache
   "4.5.13"
   :exclusions
   [[org.clojure/clojure]]]
  nil,
  [org.apache.httpcomponents/httpclient
   "4.5.13"
   :exclusions
   [[org.clojure/clojure]]]
  {[commons-logging "1.2"] nil},
  [org.apache.httpcomponents/httpcore
   "4.4.14"
   :exclusions
   [[org.clojure/clojure]]]
  nil,
  [org.apache.httpcomponents/httpmime
   "4.5.13"
   :exclusions
   [[org.clojure/clojure]]]
  nil,
  [potemkin "0.4.5" :exclusions [[org.clojure/clojure]]]
  {[riddley "0.1.12"] nil},
  [slingshot "0.12.2" :exclusions [[org.clojure/clojure]]] nil},
 [clj-oauth "1.5.5"]
 {[commons-codec "1.8"] nil,
  [org.bouncycastle/bcpkix-jdk15on "1.54"] nil,
  [org.bouncycastle/bcprov-jdk15on "1.54"] nil},
 [clojure-complete "0.2.5" :exclusions [[org.clojure/clojure]]] nil,
 [clojure.java-time "0.3.3"] {[clj-tuple "0.2.2"] nil},
 [com.layerware/hugsql-adapter-next-jdbc "0.5.1"]
 {[com.layerware/hugsql-adapter "0.5.1"] nil},
 [com.layerware/hugsql "0.5.1"]
 {[com.layerware/hugsql-adapter-clojure-java-jdbc "0.5.1"] nil,
  [com.layerware/hugsql-core "0.5.1"]
  {[org.clojure/tools.reader "1.3.2"] nil}},
 [com.stripe/stripe-java "20.77.0"]
 {[com.google.code.gson/gson "2.8.8"] nil},
 [com.taoensso/timbre "5.1.2"]
 {[com.taoensso/encore "3.12.1"] {[com.taoensso/truss "1.6.0"] nil},
  [io.aviso/pretty "0.1.37"] nil},
 [compojure "1.6.2"]
 {[clout "2.2.1"]
  {[instaparse "1.4.8" :exclusions [[org.clojure/clojure]]] nil},
  [medley "1.3.0"] nil,
  [org.clojure/tools.macro "0.1.5"] nil,
  [ring/ring-codec "1.1.2"] nil},
 [environ "1.2.0"] nil,
 [failjure "2.2.0"] nil,
 [nrepl "0.8.3" :exclusions [[org.clojure/clojure]]] nil,
 [org.clojure/clojure "1.10.3"]
 {[org.clojure/core.specs.alpha "0.2.56"] nil,
  [org.clojure/spec.alpha "0.2.194"] nil},
 [org.xerial/sqlite-jdbc "3.36.0.1"] nil,
 [ragtime "0.8.1"]
 {[ragtime/core "0.8.1"] nil,
  [ragtime/jdbc "0.8.1"]
  {[org.clojure/java.jdbc "0.5.8"] nil, [resauce "0.1.0"] nil}},
 [ring-cors "0.1.13"] nil,
 [ring-logger "1.0.1"] {[org.clojure/tools.logging "0.3.1"] nil},
 [ring/ring-core "1.9.1"]
 {[commons-fileupload "1.4"] nil,
  [commons-io "2.6"] nil,
  [crypto-equality "1.0.0"] nil,
  [crypto-random "1.2.0"] nil},
 [ring/ring-defaults "0.3.2"]
 {[javax.servlet/javax.servlet-api "3.1.0"] nil,
  [ring/ring-anti-forgery "1.3.0"] {[hiccup "1.0.5"] nil},
  [ring/ring-headers "0.3.0"] nil,
  [ring/ring-ssl "0.3.0"] nil},
 [ring/ring-jetty-adapter "1.9.1"]
 {[org.eclipse.jetty/jetty-server "9.4.36.v20210114"]
  {[org.eclipse.jetty/jetty-http "9.4.36.v20210114"]
   {[org.eclipse.jetty/jetty-util "9.4.36.v20210114"] nil},
   [org.eclipse.jetty/jetty-io "9.4.36.v20210114"] nil},
  [ring/ring-servlet "1.9.1"] nil},
 [ring/ring-json "0.5.0"] nil,
 [ring/ring-mock "0.4.0"] nil,
 [seancorfield/next.jdbc "1.0.424"]
 {[org.clojure/java.data "1.0.64"] nil},
 [twttr "3.2.3"]
 {[aleph "0.4.6"]
  {[io.netty/netty-codec-http "4.1.25.Final"] nil,
   [io.netty/netty-codec "4.1.25.Final"] nil,
   [io.netty/netty-handler-proxy "4.1.25.Final"]
   {[io.netty/netty-codec-socks "4.1.25.Final"] nil},
   [io.netty/netty-handler "4.1.25.Final"] nil,
   [io.netty/netty-resolver-dns "4.1.25.Final"]
   {[io.netty/netty-codec-dns "4.1.25.Final"] nil},
   [io.netty/netty-resolver "4.1.25.Final"] nil,
   [io.netty/netty-transport-native-epoll "4.1.25.Final"]
   {[io.netty/netty-common "4.1.25.Final"] nil,
    [io.netty/netty-transport-native-unix-common "4.1.25.Final"] nil},
   [io.netty/netty-transport "4.1.25.Final"]
   {[io.netty/netty-buffer "4.1.25.Final"] nil},
   [manifold "0.1.8"] {[io.aleph/dirigiste "0.1.5"] nil}},
  [byte-streams "0.2.4"] {[primitive-math "0.1.6"] nil},
  [org.clojure/data.json "0.2.6"] nil}}

also here's my project.clj dependencies

  :dependencies [[org.clojure/clojure "1.10.3"]
                 [compojure "1.6.2"]
                 [ring/ring-defaults "0.3.2"]
                 [seancorfield/next.jdbc "1.0.424"]
                 [ragtime "0.8.1"]
                 [ring/ring-json "0.5.0"]
                 [ring-cors "0.1.13"]
                 [ring/ring-core "1.9.1"]
                 [ring/ring-jetty-adapter "1.9.1"]
                 [ring/ring-mock "0.4.0"]
                 [environ "1.2.0"]
                 [cheshire "5.10.0"]
                 [failjure "2.2.0"]
                 [buddy/buddy-hashers "1.4.0"]
                 [buddy/buddy-auth "2.2.0"]
                 [org.xerial/sqlite-jdbc "3.36.0.1"]
                 [ring-logger "1.0.1"]
                 [com.stripe/stripe-java "20.77.0"]
                 [clj-oauth "1.5.5"]
                 [twttr "3.2.3" :exclusions [org.clojure/tools.logging riddley]]
                 [clj-http "3.12.3"]
                 [abengoa/clj-stripe "1.0.4"]
                 [com.layerware/hugsql "0.5.1"]
                 [com.layerware/hugsql-adapter-next-jdbc "0.5.1"]
                 [com.taoensso/timbre "5.1.2"]
                 [clojure.java-time "0.3.3"]
                 [byte-transforms "0.1.4"]
              ]