From 18801e1e1c9f5ed5407a81f6aa12771324f03611 Mon Sep 17 00:00:00 2001 From: niten Date: Mon, 19 Feb 2024 17:54:50 -0800 Subject: [PATCH] Get issuer/client-id from wellknown --- src/mebot/client.clj | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/mebot/client.clj b/src/mebot/client.clj index 7b0bb9d..dc54c33 100644 --- a/src/mebot/client.clj +++ b/src/mebot/client.clj @@ -70,20 +70,31 @@ (str base "/_matrix/" api "/v" version "/" (str/join "/" (map to-component components))))) +(defn- get-token-issuer! [domain] + (-> (exec-request! {:url (str "https://" domain "/.well-known/matrix/openid") + :method :get + :accept :json}) + :token-issuer)) + +(defn- get-client-id! [domain] + (-> (exec-request! {:url (str "https://" domain "/.well-known/matrix/openid") + :method :get + :accept :json}) + :client-id)) + (defn- get-wellknown-url! [domain] - (-> - (exec-request! {:url (str "https://" domain "/.well-known/matrix/client") - :method :get - :accept :json}) + (-> (exec-request! {:url (str "https://" domain "/.well-known/matrix/client") + :method :get + :accept :json}) :m.homeserver :base_url)) -(defn get-jwt-token! [& {:keys [provider-url client-id username password]}] - (-> (exec-request! {:url provider-url +(defn get-jwt-token! [& {:keys [domain username password]}] + (-> (exec-request! {:url (get-token-issuer! provider-url) :method :post :accept :json :form-params {:grant_type "client_credentials" - :client_id client-id + :client_id (get-client-id! client-id) :username username :password password}}) :access_token))