diff --git a/packages/poster/package.json b/packages/poster/package.json index 21f8707..4f4b40c 100644 --- a/packages/poster/package.json +++ b/packages/poster/package.json @@ -9,7 +9,6 @@ "gen-discord-types": "npx openapi-typescript https://raw.githubusercontent.com/discord/discord-api-spec/main/specs/openapi.json --output ./dts/discord.d.ts", "repl": "shadow-cljs node-repl" }, - "devDependencies": { "shadow-cljs": "^2.8.52", "source-map-support": "^0.5.13" diff --git a/packages/poster/src/core/actions.cljs b/packages/poster/src/core/actions.cljs index 88ba4ea..415c2fe 100644 --- a/packages/poster/src/core/actions.cljs +++ b/packages/poster/src/core/actions.cljs @@ -14,6 +14,7 @@ :guild/edit ["PATCH" "/applications/{application.id}/guilds/{guild.id}/commands/{command.id}"] :guild/delete ["DELETE" "/applications/{application.id}/guilds/{guild.id}/commands/{command.id}"] :guild/put ["PUT" "/applications/{application.id}/guilds/{guild.id}/commands"] + :application/me ["GET" "/applications/@me"] }) (defn- request-init [v] diff --git a/packages/poster/src/core/poster.cljs b/packages/poster/src/core/poster.cljs index a025376..43f4da2 100644 --- a/packages/poster/src/core/poster.cljs +++ b/packages/poster/src/core/poster.cljs @@ -1,5 +1,6 @@ (ns core.poster (:require [clojure.string :refer [replace]] + [shadow.cljs.modern :refer (js-await)] [core.actions :refer [actions]])) (def base "https://discord.com/api/v10") @@ -13,17 +14,24 @@ (defn- ?params [^js query] (new js/URLSearchParams query)) + +(defn fetch-application [headers] + #_(println (str base (actions "application/me"))) + (-> (js/fetch (str base (first (actions "application/me"))) #js{ "headers" headers }) + (.then (fn [res] (.json res))) + (.then (fn [json] (.-id json))))) (defn poster [token, appid] (let [header #js{ "Content-Type" "application/json" - "Authorization" (str "Bot " token) }] - (fn [action opts] + "Authorization" (str "Bot " token) } ] + (js-await [appid (fetch-application header)] + (fn [action opts] (let [[url mkrequest] (actions action) options #js{"app_id" appid "guild_id" (.-guild_id ^js opts) "command_id" (.-command_id ^js opts)} url (new js/URL (inject url options))] (set! (.-search url) (?params (.-query ^js opts))) - (js/fetch url (mkrequest (.-body ^js opts) header)))))) + (js/fetch url (mkrequest (.-body ^js opts) header))))))) (defn isOk? [^js response] (.-ok response)) diff --git a/packages/poster/test/spec.mjs b/packages/poster/test/spec.mjs index 035531e..a49a122 100644 --- a/packages/poster/test/spec.mjs +++ b/packages/poster/test/spec.mjs @@ -1,7 +1,6 @@ import poster from '../dist/index.js'; -const send = poster.client("token", "appid"); - +const send = await poster.client("MTA2MTQyMTgzNDM0MTQ2MjAzNg.GL15Ob.EJ9SgdMQUhTTTGRhRKNBvVDQkTma7AG3DuLWis"); const req = await send("global/get-all", {