From e521b2e9c92ba2c70c1206d879a0ee87e745238f Mon Sep 17 00:00:00 2001 From: ty Date: Wed, 3 Jul 2024 11:23:16 +0900 Subject: [PATCH] Implement both synchronous (1-arity) and asynchronous (3-arity) Ring handler functions. #54 --- src/ring/middleware/oauth2.clj | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/ring/middleware/oauth2.clj b/src/ring/middleware/oauth2.clj index a46f813..3fbefb1 100644 --- a/src/ring/middleware/oauth2.clj +++ b/src/ring/middleware/oauth2.clj @@ -158,10 +158,15 @@ {:pre [(every? valid-profile? (vals profiles))]} (let [profiles (for [[k v] profiles] (assoc v :id k)) launches (into {} (map (juxt :launch-uri identity)) profiles) - redirects (into {} (map (juxt parse-redirect-url identity)) profiles)] - (fn [{:keys [uri] :as request}] - (if-let [profile (launches uri)] - ((make-launch-handler profile) request) - (if-let [profile (redirects uri)] - ((:redirect-handler profile (make-redirect-handler profile)) request) - (handler (assoc-access-tokens request))))))) + redirects (into {} (map (juxt parse-redirect-url identity)) profiles) + f (fn [{:keys [uri] :as request}] + (if-let [profile (launches uri)] + ((make-launch-handler profile) request) + (if-let [profile (redirects uri)] + ((:redirect-handler profile + (make-redirect-handler profile)) + request) + (handler (assoc-access-tokens request)))))] + (fn + ([request] (f request)) + ([request respond _] (respond (f request))))))