cache authenticated tokens for faster response

This commit is contained in:
Bart Akeley 2018-01-27 17:52:23 -06:00
parent 50657ef22d
commit dfe3309432

View file

@ -2,14 +2,18 @@
(:require [buddy.auth.backends :as backends]
[clj-http.client :as client]))
(def tokens (atom {}))
(defn facebook-me [token]
(client/get (str "https://graph.facebook.com/me?access_token=" token) {:accept :json}))
(defn facebook-me-ok [token]
(= (:status (facebook-me token)) 200))
(= 200 (:status (facebook-me token))) (swap! tokens assoc (keyword token) true))
(defn facebook-token-auth [_ token]
(if (facebook-me-ok token) token))
(cond
(get @tokens (keyword token)) token
(facebook-me-ok token) token))
(def auth-backend
(backends/token {:token-name "facebook-token" :authfn facebook-token-auth}))