Skip to content

Commit

Permalink
Merge pull request #5 from DEVTomatoCake/feat/dc-openapi-schema
Browse files Browse the repository at this point in the history
Use dc OpenAPI schema
  • Loading branch information
MaddyUnderStars authored Aug 13, 2024
2 parents 2fb3489 + faff3e3 commit ffb92e8
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 34 deletions.
58 changes: 35 additions & 23 deletions missing.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"missing": 544,
"missing": 566,
"spacebar": 157,
"discord": 676,
"discord": 709,
"routes": [
"/:id/:id/update-gaming-stats",
"/:id/force-send-prompt",
Expand All @@ -25,15 +25,24 @@
"/applications/:id/application-command-index",
"/applications/:id/attachment",
"/applications/:id/branches",
"/applications/:id/branches",
"/applications/:id/branches/:id/builds/:id/size",
"/applications/:id/branches/:id/builds/live",
"/applications/:id/branches/:id/storage",
"/applications/:id/commands",
"/applications/:id/commands/:id",
"/applications/:id/disclosures",
"/applications/:id/emojis",
"/applications/:id/emojis/:id",
"/applications/:id/entitlements/:id",
"/applications/:id/entitlements/:id/consume",
"/applications/:id/external-assets",
"/applications/:id/guilds/:id/commands",
"/applications/:id/guilds/:id/commands/:id",
"/applications/:id/guilds/:id/commands/:id/permissions",
"/applications/:id/guilds/:id/commands/permissions",
"/applications/:id/payment-payout-groups",
"/applications/:id/public",
"/applications/:id/role-connections/metadata",
"/applications/:id/store-layout",
"/applications/:id/subscription-group-listings/:id",
"/applications/:id/transfer",
Expand Down Expand Up @@ -102,6 +111,7 @@
"/channels/:id/messages/:id/hide-guild-feed",
"/channels/:id/messages/:id/interaction-data",
"/channels/:id/messages/:id/reactions/:id/:id/:id",
"/channels/:id/messages/:id/reactions/:id/@me",
"/channels/:id/messages/:id/threads",
"/channels/:id/messages/ack",
"/channels/:id/messages/search",
Expand All @@ -121,10 +131,14 @@
"/channels/:id/store-listings/:id",
"/channels/:id/tags",
"/channels/:id/tags/:id",
"/channels/:id/thread-members",
"/channels/:id/thread-members/:id",
"/channels/:id/thread-members/@me",
"/channels/:id/thread-members/@me/settings",
"/channels/:id/threads",
"/channels/:id/threads/archived/:id",
"/channels/:id/threads/archived/private",
"/channels/:id/threads/archived/public",
"/channels/:id/threads/search",
"/channels/:id/users/@me/threads/archived/private",
"/channels/:id/voice-channel-effects",
Expand Down Expand Up @@ -214,7 +228,6 @@
"/guilds/:id/auto-moderation/rules/:id",
"/guilds/:id/auto-moderation/rules/validate",
"/guilds/:id/avatars/:id.:id",
"/guilds/:id/avatars/:id.:id",
"/guilds/:id/banners/:id.:id",
"/guilds/:id/bans/search",
"/guilds/:id/basic",
Expand Down Expand Up @@ -247,7 +260,7 @@
"/guilds/:id/join-wfs-server",
"/guilds/:id/members-search",
"/guilds/:id/members/@me",
"/guilds/:id/members/@me",
"/guilds/:id/members/search",
"/guilds/:id/members/supplemental",
"/guilds/:id/members/unusual-dm-activity",
"/guilds/:id/messages/search/tabs",
Expand Down Expand Up @@ -291,14 +304,17 @@
"/guilds/:id/scheduled-events/:id/:id/users/@me",
"/guilds/:id/scheduled-events/:id/exceptions",
"/guilds/:id/scheduled-events/:id/exceptions/:id",
"/guilds/:id/scheduled-events/:id/users",
"/guilds/:id/scheduled-events/:id/users/counts",
"/guilds/:id/soundboard-sounds",
"/guilds/:id/soundboard-sounds/:id",
"/guilds/:id/splashes/:id.jpg",
"/guilds/:id/threads/active",
"/guilds/:id/top-emojis",
"/guilds/:id/top-read-channels",
"/guilds/:id/users/:id/avatars/:id.:id",
"/guilds/:id/users/:id/banners/:id.:id",
"/guilds/:id/voice-states/@me",
"/guilds/automations/email-domain-lookup",
"/guilds/automations/email-domain-lookup/verify",
"/guilds/automations/email-domain-lookup/verify-code",
Expand All @@ -308,6 +324,7 @@
"/integrations/:id/join",
"/integrations/:id/search",
"/interactions",
"/interactions/:id/:id/callback",
"/join-requests/:id",
"/join-requests/:id/interview",
"/messages-log/guild-channels/get",
Expand All @@ -324,6 +341,7 @@
"/oauth2/authorize/webhook-channels",
"/oauth2/device/finish",
"/oauth2/device/verify",
"/oauth2/keys",
"/oauth2/samsung/authorize",
"/oauth2/samsung/authorize/callback",
"/oauth2/tokens/:id",
Expand Down Expand Up @@ -422,6 +440,7 @@
"/users/@me/application-command-index",
"/users/@me/applications/:id/achievements",
"/users/@me/applications/:id/entitlement-ticket",
"/users/@me/applications/:id/role-connection",
"/users/@me/applications/:id/ticket",
"/users/@me/applications/role-connections",
"/users/@me/avatars/discordify",
Expand Down Expand Up @@ -473,10 +492,10 @@
"/users/@me/email/verify-code",
"/users/@me/emoji-captions",
"/users/@me/entitlements/gift-codes",
"/users/@me/entitlements/gift-codes",
"/users/@me/entitlements/gift-codes/:id",
"/users/@me/gravity-icymi",
"/users/@me/gravity-icymi-negative",
"/users/@me/guilds/:id/member",
"/users/@me/guilds/:id/member/ack-dm-upsell-settings",
"/users/@me/guilds/integration-application-ids",
"/users/@me/guilds/premium/subscription-slots/:id/cancel",
Expand Down Expand Up @@ -527,7 +546,6 @@
"/users/@me/remote-auth/login",
"/users/@me/saved-messages",
"/users/@me/saved-messages/:id/:id",
"/users/@me/saved-messages/:id/:id",
"/users/@me/scheduled-events",
"/users/@me/settings-proto/:id",
"/users/@me/settings/game-notifications",
Expand All @@ -546,37 +564,31 @@
"/users/username/:id",
"/voice/:id/match-public-key",
"/voice/public-keys",
"/webhooks/:id/:id/github",
"/webhooks/:id/:id/messages/:id",
"/webhooks/:id/:id/messages/@original",
"/webhooks/:id/:id/slack",
"webapp:///billing/premium/subscribe/login-handoff?handoff_key=:id&handoff_token=:id&destination=:id"
],
"additional": [
"/-/healthz",
"/-/readyz",
"/applications/{id}/bot",
"/applications/{id}/bot/reset",
"/applications/{id}/delete",
"/applications/:id/bot",
"/applications/:id/bot/reset",
"/applications/:id/delete",
"/auth/generate-registration-tokens",
"/auth/mfa/totp",
"/auth/mfa/webauthn",
"/channels/{channel_id}/messages/bulk-delete",
"/channels/{channel_id}/messages/{message_id}/ack",
"/channels/{channel_id}/messages/{message_id}/crosspost",
"/channels/{channel_id}/messages/{message_id}/reactions",
"/channels/{channel_id}/purge",
"/connections/{connection_name}/{connection_id}/refresh",
"/guilds/{guild_id}/members/{member_id}/nick",
"/guilds/{guild_id}/roles/{role_id}/member-ids",
"/oauth2/applications/@me",
"/channels/:id/purge",
"/ping",
"/policies/instance",
"/policies/instance/domains",
"/policies/instance/limits",
"/policies/stats",
"/scheduled-maintenances/upcoming_json/scheduled-maintenances/upcoming.json",
"/store/published-listings/applications/{id}/subscription-plans",
"/store/published-listings/applications/:id/subscription-plans",
"/track",
"/updates",
"/users/@me/connections/{connection_name}/{connection_id}/access-token",
"/users/{id}/delete",
"/voice/regions"
"/users/:id/delete"
]
}
27 changes: 16 additions & 11 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,8 @@ import fetch from "node-fetch";

const JAVASCRIPT_ENVIRONMENT = fs.readFileSync("./src/template.js").toString();

const ignoredAdditional = new Set([
// Not used in the client
"/gateway",
"/gateway/bot",
"/guilds/{guild_id}/widget.json",
"/guilds/{guild_id}/widget.png",
]);
// Not used in the client
const ignoredAdditional: Set<string> = new Set([]);

const getClientSource = async () => {
const index = await fetch("https://canary.discord.com/app").then(x => x.text());
Expand Down Expand Up @@ -76,20 +71,28 @@ const findClientRoutes = (source: string): string[] => {
return eval(out);
};

const getDcOpenAPI = async () => {
return fetch(
"https://github.com/discord/discord-api-spec/raw/main/specs/openapi_preview.json"
)
.then((x) => x.json())
.then((x: any) => Object.keys(x.paths).map((y) => y.replace(/\/$/, "").replace(/{\w+?}/g, ":id")));
};

const getSbOpenAPI = async () => {
return fetch(
"https://raw.githubusercontent.com/spacebarchat/server/master/assets/openapi.json"
)
.then((x) => x.json())
.then((x: any) => Object.keys(x.paths).map((y) => y.replace(/\/$/, "")));
.then((x: any) => Object.keys(x.paths).map((y) => y.replace(/\/$/, "").replace(/{\w+?}/g, ":id")));
};

const compare = (discord: string[], spacebar: string[]) => {
const missing = [];
const additional = [];

for (const route of discord) {
const regex = route.replaceAll("/", "\\/").replaceAll(":id", "{.*}");
const regex = route.replaceAll("/", "\\/");

const found = spacebar.some((x) => x.match(regex));

Expand All @@ -99,7 +102,7 @@ const compare = (discord: string[], spacebar: string[]) => {
}

for (const route of spacebar) {
const regex = route.replaceAll("/", "\\/").replace(/{.*}/g, ":id");
const regex = route.replaceAll("/", "\\/");

const found = discord.some((x) => x.match(regex));

Expand All @@ -113,7 +116,9 @@ const compare = (discord: string[], spacebar: string[]) => {

(async () => {
const source = await getClientSource();
const dcRoutes = findClientRoutes(source);
const dcOpenAPI = await getDcOpenAPI();
const dcRoutes: string[] = Array.from(new Set([...findClientRoutes(source), ...dcOpenAPI]));

const sbRoutes = await getSbOpenAPI();
const [missing, additional] = compare(dcRoutes, sbRoutes);

Expand Down

0 comments on commit ffb92e8

Please sign in to comment.