mirror of
https://github.com/spacebarchat/server.git
synced 2026-10-23 04:22:47 +00:00
fixing lots of openapi crap
This commit is contained in:
60 files changed
+306
-280
No files matched your search
@@ -114,7 +114,7 @@ router.post(
|
||||
router.patch(
|
||||
"/",
|
||||
route({
|
||||
body: "BotModifySchema",
|
||||
requestBody: "BotModifySchema",
|
||||
responses: {
|
||||
200: {
|
||||
body: "Application",
|
||||
|
||||
@@ -55,7 +55,7 @@ router.get(
|
||||
router.patch(
|
||||
"/",
|
||||
route({
|
||||
body: "ApplicationModifySchema",
|
||||
requestBody: "ApplicationModifySchema",
|
||||
responses: {
|
||||
200: {
|
||||
body: "Application",
|
||||
|
||||
@@ -48,7 +48,7 @@ router.get(
|
||||
router.post(
|
||||
"/",
|
||||
route({
|
||||
body: "ApplicationCreateSchema",
|
||||
requestBody: "ApplicationCreateSchema",
|
||||
responses: {
|
||||
200: {
|
||||
body: "Application",
|
||||
|
||||
@@ -31,7 +31,7 @@ const router = Router();
|
||||
router.post(
|
||||
"/",
|
||||
route({
|
||||
body: "ForgotPasswordSchema",
|
||||
requestBody: "ForgotPasswordSchema",
|
||||
responses: {
|
||||
204: {},
|
||||
400: {
|
||||
|
||||
@@ -37,7 +37,7 @@ export default router;
|
||||
router.post(
|
||||
"/",
|
||||
route({
|
||||
body: "LoginSchema",
|
||||
requestBody: "LoginSchema",
|
||||
responses: {
|
||||
200: {
|
||||
body: "TokenResponse",
|
||||
|
||||
@@ -26,7 +26,7 @@ const router = Router();
|
||||
router.post(
|
||||
"/",
|
||||
route({
|
||||
body: "TotpSchema",
|
||||
requestBody: "TotpSchema",
|
||||
responses: {
|
||||
200: {
|
||||
body: "TokenResponse",
|
||||
|
||||
@@ -42,7 +42,7 @@ function toArrayBuffer(buf: Buffer) {
|
||||
router.post(
|
||||
"/",
|
||||
route({
|
||||
body: "WebAuthnTotpSchema",
|
||||
requestBody: "WebAuthnTotpSchema",
|
||||
responses: {
|
||||
200: { body: "TokenResponse" },
|
||||
400: { body: "APIErrorResponse" },
|
||||
|
||||
@@ -16,25 +16,25 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Request, Response, Router } from "express";
|
||||
import {
|
||||
Config,
|
||||
generateToken,
|
||||
Invite,
|
||||
FieldErrors,
|
||||
User,
|
||||
adjustEmail,
|
||||
RegisterSchema,
|
||||
ValidRegistrationToken,
|
||||
} from "@spacebar/util";
|
||||
import {
|
||||
route,
|
||||
getIpAdress,
|
||||
IPAnalysis,
|
||||
getIpAdress,
|
||||
isProxy,
|
||||
route,
|
||||
verifyCaptcha,
|
||||
} from "@spacebar/api";
|
||||
import {
|
||||
Config,
|
||||
FieldErrors,
|
||||
Invite,
|
||||
RegisterSchema,
|
||||
User,
|
||||
ValidRegistrationToken,
|
||||
adjustEmail,
|
||||
generateToken,
|
||||
} from "@spacebar/util";
|
||||
import bcrypt from "bcrypt";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { MoreThan } from "typeorm";
|
||||
|
||||
@@ -43,7 +43,7 @@ const router: Router = Router();
|
||||
router.post(
|
||||
"/",
|
||||
route({
|
||||
body: "RegisterSchema",
|
||||
requestBody: "RegisterSchema",
|
||||
responses: {
|
||||
200: { body: "TokenResponse" },
|
||||
400: { body: "APIErrorOrCaptchaResponse" },
|
||||
|
||||
@@ -35,7 +35,7 @@ const router = Router();
|
||||
router.post(
|
||||
"/",
|
||||
route({
|
||||
body: "PasswordResetSchema",
|
||||
requestBody: "PasswordResetSchema",
|
||||
responses: {
|
||||
200: {
|
||||
body: "TokenResponse",
|
||||
|
||||
@@ -41,7 +41,7 @@ async function getToken(user: User) {
|
||||
router.post(
|
||||
"/",
|
||||
route({
|
||||
body: "VerifyEmailSchema",
|
||||
requestBody: "VerifyEmailSchema",
|
||||
responses: {
|
||||
200: {
|
||||
body: "TokenResponse",
|
||||
|
||||
@@ -25,7 +25,7 @@ const router = Router();
|
||||
router.post(
|
||||
"/",
|
||||
route({
|
||||
body: "BackupCodesChallengeSchema",
|
||||
requestBody: "BackupCodesChallengeSchema",
|
||||
responses: {
|
||||
200: { body: "BackupCodesChallengeResponse" },
|
||||
400: { body: "APIErrorResponse" },
|
||||
|
||||
@@ -107,7 +107,7 @@ router.delete(
|
||||
router.patch(
|
||||
"/",
|
||||
route({
|
||||
body: "ChannelModifySchema",
|
||||
requestBody: "ChannelModifySchema",
|
||||
permission: "MANAGE_CHANNELS",
|
||||
responses: {
|
||||
200: {
|
||||
|
||||
@@ -35,7 +35,7 @@ const router: Router = Router();
|
||||
router.post(
|
||||
"/",
|
||||
route({
|
||||
body: "InviteCreateSchema",
|
||||
requestBody: "InviteCreateSchema",
|
||||
permission: "CREATE_INSTANT_INVITE",
|
||||
right: "CREATE_INVITES",
|
||||
responses: {
|
||||
|
||||
@@ -34,7 +34,7 @@ const router = Router();
|
||||
router.post(
|
||||
"/",
|
||||
route({
|
||||
body: "MessageAcknowledgeSchema",
|
||||
requestBody: "MessageAcknowledgeSchema",
|
||||
responses: {
|
||||
200: {},
|
||||
403: {},
|
||||
|
||||
@@ -52,7 +52,7 @@ const messageUpload = multer({
|
||||
router.patch(
|
||||
"/",
|
||||
route({
|
||||
body: "MessageEditSchema",
|
||||
requestBody: "MessageEditSchema",
|
||||
permission: "SEND_MESSAGES",
|
||||
right: "SEND_MESSAGES",
|
||||
responses: {
|
||||
@@ -152,7 +152,7 @@ router.put(
|
||||
next();
|
||||
},
|
||||
route({
|
||||
body: "MessageCreateSchema",
|
||||
requestBody: "MessageCreateSchema",
|
||||
permission: "SEND_MESSAGES",
|
||||
right: "SEND_BACKDATED_EVENTS",
|
||||
responses: {
|
||||
|
||||
@@ -39,7 +39,7 @@ export default router;
|
||||
router.post(
|
||||
"/",
|
||||
route({
|
||||
body: "BulkDeleteSchema",
|
||||
requestBody: "BulkDeleteSchema",
|
||||
responses: {
|
||||
204: {},
|
||||
400: {
|
||||
|
||||
@@ -220,7 +220,7 @@ router.post(
|
||||
next();
|
||||
},
|
||||
route({
|
||||
body: "MessageCreateSchema",
|
||||
requestBody: "MessageCreateSchema",
|
||||
permission: "SEND_MESSAGES",
|
||||
right: "SEND_MESSAGES",
|
||||
responses: {
|
||||
|
||||
@@ -36,7 +36,7 @@ const router: Router = Router();
|
||||
router.put(
|
||||
"/:overwrite_id",
|
||||
route({
|
||||
body: "ChannelPermissionOverwriteSchema",
|
||||
requestBody: "ChannelPermissionOverwriteSchema",
|
||||
permission: "MANAGE_ROLES",
|
||||
responses: {
|
||||
204: {},
|
||||
|
||||
@@ -54,7 +54,7 @@ router.get(
|
||||
router.post(
|
||||
"/",
|
||||
route({
|
||||
body: "WebhookCreateSchema",
|
||||
requestBody: "WebhookCreateSchema",
|
||||
permission: "MANAGE_WEBHOOKS",
|
||||
responses: {
|
||||
200: {
|
||||
|
||||
@@ -29,7 +29,7 @@ const router = Router();
|
||||
|
||||
router.post(
|
||||
"/",
|
||||
route({ body: "ConnectionCallbackSchema" }),
|
||||
route({ requestBody: "ConnectionCallbackSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const { connection_name } = req.params;
|
||||
const connection = ConnectionStore.connections.get(connection_name);
|
||||
|
||||
@@ -16,20 +16,20 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Request, Response, Router } from "express";
|
||||
import { getIpAdress, route } from "@spacebar/api";
|
||||
import {
|
||||
Ban,
|
||||
BanModeratorSchema,
|
||||
BanRegistrySchema,
|
||||
DiscordApiErrors,
|
||||
emitEvent,
|
||||
GuildBanAddEvent,
|
||||
GuildBanRemoveEvent,
|
||||
Ban,
|
||||
User,
|
||||
Member,
|
||||
BanRegistrySchema,
|
||||
BanModeratorSchema,
|
||||
User,
|
||||
emitEvent,
|
||||
} from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { getIpAdress, route } from "@spacebar/api";
|
||||
|
||||
const router: Router = Router();
|
||||
|
||||
@@ -97,7 +97,7 @@ router.get(
|
||||
|
||||
router.put(
|
||||
"/:user_id",
|
||||
route({ body: "BanCreateSchema", permission: "BAN_MEMBERS" }),
|
||||
route({ requestBody: "BanCreateSchema", permission: "BAN_MEMBERS" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const { guild_id } = req.params;
|
||||
const banned_user_id = req.params.user_id;
|
||||
@@ -143,7 +143,7 @@ router.put(
|
||||
|
||||
router.put(
|
||||
"/@me",
|
||||
route({ body: "BanCreateSchema" }),
|
||||
route({ requestBody: "BanCreateSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const { guild_id } = req.params;
|
||||
|
||||
|
||||
@@ -16,16 +16,16 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Router, Response, Request } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
Channel,
|
||||
ChannelUpdateEvent,
|
||||
emitEvent,
|
||||
ChannelModifySchema,
|
||||
ChannelReorderSchema,
|
||||
ChannelUpdateEvent,
|
||||
emitEvent,
|
||||
} from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { route } from "@spacebar/api";
|
||||
const router = Router();
|
||||
|
||||
router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
@@ -37,7 +37,10 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
|
||||
router.post(
|
||||
"/",
|
||||
route({ body: "ChannelModifySchema", permission: "MANAGE_CHANNELS" }),
|
||||
route({
|
||||
requestBody: "ChannelModifySchema",
|
||||
permission: "MANAGE_CHANNELS",
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
// creates a new guild channel https://discord.com/developers/docs/resources/guild#create-guild-channel
|
||||
const { guild_id } = req.params;
|
||||
@@ -54,7 +57,10 @@ router.post(
|
||||
|
||||
router.patch(
|
||||
"/",
|
||||
route({ body: "ChannelReorderSchema", permission: "MANAGE_CHANNELS" }),
|
||||
route({
|
||||
requestBody: "ChannelReorderSchema",
|
||||
permission: "MANAGE_CHANNELS",
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
// changes guild channel position
|
||||
const { guild_id } = req.params;
|
||||
|
||||
@@ -16,21 +16,21 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Router, Request, Response } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
Config,
|
||||
DiscordApiErrors,
|
||||
emitEvent,
|
||||
Emoji,
|
||||
EmojiCreateSchema,
|
||||
EmojiModifySchema,
|
||||
GuildEmojisUpdateEvent,
|
||||
handleFile,
|
||||
Member,
|
||||
Snowflake,
|
||||
User,
|
||||
EmojiCreateSchema,
|
||||
EmojiModifySchema,
|
||||
emitEvent,
|
||||
handleFile,
|
||||
} from "@spacebar/util";
|
||||
import { route } from "@spacebar/api";
|
||||
import { Request, Response, Router } from "express";
|
||||
|
||||
const router = Router();
|
||||
|
||||
@@ -63,7 +63,7 @@ router.get("/:emoji_id", route({}), async (req: Request, res: Response) => {
|
||||
router.post(
|
||||
"/",
|
||||
route({
|
||||
body: "EmojiCreateSchema",
|
||||
requestBody: "EmojiCreateSchema",
|
||||
permission: "MANAGE_EMOJIS_AND_STICKERS",
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
@@ -113,7 +113,7 @@ router.post(
|
||||
router.patch(
|
||||
"/:emoji_id",
|
||||
route({
|
||||
body: "EmojiModifySchema",
|
||||
requestBody: "EmojiModifySchema",
|
||||
permission: "MANAGE_EMOJIS_AND_STICKERS",
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
|
||||
@@ -16,21 +16,21 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Request, Response, Router } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
DiscordApiErrors,
|
||||
Guild,
|
||||
GuildUpdateEvent,
|
||||
GuildUpdateSchema,
|
||||
Member,
|
||||
SpacebarApiErrors,
|
||||
emitEvent,
|
||||
getPermission,
|
||||
getRights,
|
||||
Guild,
|
||||
GuildUpdateEvent,
|
||||
handleFile,
|
||||
Member,
|
||||
GuildUpdateSchema,
|
||||
SpacebarApiErrors,
|
||||
} from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { route } from "@spacebar/api";
|
||||
|
||||
const router = Router();
|
||||
|
||||
@@ -55,7 +55,7 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
|
||||
router.patch(
|
||||
"/",
|
||||
route({ body: "GuildUpdateSchema", permission: "MANAGE_GUILD" }),
|
||||
route({ requestBody: "GuildUpdateSchema", permission: "MANAGE_GUILD" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const body = req.body as GuildUpdateSchema;
|
||||
const { guild_id } = req.params;
|
||||
|
||||
@@ -16,21 +16,21 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Request, Response, Router } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
Member,
|
||||
emitEvent,
|
||||
Emoji,
|
||||
getPermission,
|
||||
getRights,
|
||||
Role,
|
||||
GuildMemberUpdateEvent,
|
||||
emitEvent,
|
||||
Sticker,
|
||||
Emoji,
|
||||
Guild,
|
||||
GuildMemberUpdateEvent,
|
||||
handleFile,
|
||||
Member,
|
||||
MemberChangeSchema,
|
||||
Role,
|
||||
Sticker,
|
||||
} from "@spacebar/util";
|
||||
import { route } from "@spacebar/api";
|
||||
import { Request, Response, Router } from "express";
|
||||
|
||||
const router = Router();
|
||||
|
||||
@@ -47,7 +47,7 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
|
||||
router.patch(
|
||||
"/",
|
||||
route({ body: "MemberChangeSchema" }),
|
||||
route({ requestBody: "MemberChangeSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const { guild_id } = req.params;
|
||||
const member_id =
|
||||
|
||||
@@ -16,15 +16,15 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { getPermission, Member, PermissionResolvable } from "@spacebar/util";
|
||||
import { route } from "@spacebar/api";
|
||||
import { getPermission, Member, PermissionResolvable } from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.patch(
|
||||
"/",
|
||||
route({ body: "MemberNickChangeSchema" }),
|
||||
route({ requestBody: "MemberNickChangeSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const { guild_id } = req.params;
|
||||
let permissionString: PermissionResolvable = "MANAGE_NICKNAMES";
|
||||
|
||||
@@ -31,7 +31,7 @@ const router = Router();
|
||||
|
||||
router.patch(
|
||||
"/:member_id",
|
||||
route({ body: "MemberChangeProfileSchema" }),
|
||||
route({ requestBody: "MemberChangeProfileSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const { guild_id } = req.params;
|
||||
// const member_id =
|
||||
|
||||
@@ -16,17 +16,17 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Router, Request, Response } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
Role,
|
||||
Member,
|
||||
GuildRoleUpdateEvent,
|
||||
GuildRoleDeleteEvent,
|
||||
emitEvent,
|
||||
GuildRoleDeleteEvent,
|
||||
GuildRoleUpdateEvent,
|
||||
handleFile,
|
||||
Member,
|
||||
Role,
|
||||
RoleModifySchema,
|
||||
} from "@spacebar/util";
|
||||
import { route } from "@spacebar/api";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
|
||||
const router = Router();
|
||||
@@ -69,7 +69,7 @@ router.delete(
|
||||
|
||||
router.patch(
|
||||
"/",
|
||||
route({ body: "RoleModifySchema", permission: "MANAGE_ROLES" }),
|
||||
route({ requestBody: "RoleModifySchema", permission: "MANAGE_ROLES" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const { role_id, guild_id } = req.params;
|
||||
const body = req.body as RoleModifySchema;
|
||||
|
||||
@@ -16,21 +16,21 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Request, Response, Router } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
Role,
|
||||
getPermission,
|
||||
Member,
|
||||
GuildRoleCreateEvent,
|
||||
GuildRoleUpdateEvent,
|
||||
emitEvent,
|
||||
Config,
|
||||
DiscordApiErrors,
|
||||
emitEvent,
|
||||
getPermission,
|
||||
GuildRoleCreateEvent,
|
||||
GuildRoleUpdateEvent,
|
||||
Member,
|
||||
Role,
|
||||
RoleModifySchema,
|
||||
RolePositionUpdateSchema,
|
||||
Snowflake,
|
||||
} from "@spacebar/util";
|
||||
import { route } from "@spacebar/api";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { Not } from "typeorm";
|
||||
|
||||
const router: Router = Router();
|
||||
@@ -47,7 +47,7 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
|
||||
router.post(
|
||||
"/",
|
||||
route({ body: "RoleModifySchema", permission: "MANAGE_ROLES" }),
|
||||
route({ requestBody: "RoleModifySchema", permission: "MANAGE_ROLES" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const guild_id = req.params.guild_id;
|
||||
const body = req.body as RoleModifySchema;
|
||||
@@ -104,7 +104,7 @@ router.post(
|
||||
|
||||
router.patch(
|
||||
"/",
|
||||
route({ body: "RolePositionUpdateSchema" }),
|
||||
route({ requestBody: "RolePositionUpdateSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const { guild_id } = req.params;
|
||||
const body = req.body as RolePositionUpdateSchema;
|
||||
|
||||
@@ -16,21 +16,21 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
emitEvent,
|
||||
GuildStickersUpdateEvent,
|
||||
Member,
|
||||
ModifyGuildStickerSchema,
|
||||
Snowflake,
|
||||
Sticker,
|
||||
StickerFormatType,
|
||||
StickerType,
|
||||
emitEvent,
|
||||
uploadFile,
|
||||
ModifyGuildStickerSchema,
|
||||
} from "@spacebar/util";
|
||||
import { Router, Request, Response } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import multer from "multer";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import multer from "multer";
|
||||
const router = Router();
|
||||
|
||||
router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
@@ -54,7 +54,7 @@ router.post(
|
||||
bodyParser,
|
||||
route({
|
||||
permission: "MANAGE_EMOJIS_AND_STICKERS",
|
||||
body: "ModifyGuildStickerSchema",
|
||||
requestBody: "ModifyGuildStickerSchema",
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
if (!req.file) throw new HTTPError("missing file");
|
||||
@@ -110,7 +110,7 @@ router.get("/:sticker_id", route({}), async (req: Request, res: Response) => {
|
||||
router.patch(
|
||||
"/:sticker_id",
|
||||
route({
|
||||
body: "ModifyGuildStickerSchema",
|
||||
requestBody: "ModifyGuildStickerSchema",
|
||||
permission: "MANAGE_EMOJIS_AND_STICKERS",
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
|
||||
@@ -16,11 +16,10 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Request, Response, Router } from "express";
|
||||
import { generateCode, route } from "@spacebar/api";
|
||||
import { Guild, Template } from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { route } from "@spacebar/api";
|
||||
import { generateCode } from "@spacebar/api";
|
||||
|
||||
const router: Router = Router();
|
||||
|
||||
@@ -53,7 +52,7 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
|
||||
router.post(
|
||||
"/",
|
||||
route({ body: "TemplateCreateSchema", permission: "MANAGE_GUILD" }),
|
||||
route({ requestBody: "TemplateCreateSchema", permission: "MANAGE_GUILD" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const { guild_id } = req.params;
|
||||
const guild = await Guild.findOneOrFail({
|
||||
@@ -115,7 +114,7 @@ router.put(
|
||||
|
||||
router.patch(
|
||||
"/:code",
|
||||
route({ body: "TemplateModifySchema", permission: "MANAGE_GUILD" }),
|
||||
route({ requestBody: "TemplateModifySchema", permission: "MANAGE_GUILD" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const { code, guild_id } = req.params;
|
||||
const { name, description } = req.body;
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
Channel,
|
||||
ChannelType,
|
||||
@@ -23,8 +24,7 @@ import {
|
||||
Invite,
|
||||
VanityUrlSchema,
|
||||
} from "@spacebar/util";
|
||||
import { Router, Request, Response } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
|
||||
const router = Router();
|
||||
@@ -60,7 +60,7 @@ router.get(
|
||||
|
||||
router.patch(
|
||||
"/",
|
||||
route({ body: "VanityUrlSchema", permission: "MANAGE_GUILD" }),
|
||||
route({ requestBody: "VanityUrlSchema", permission: "MANAGE_GUILD" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const { guild_id } = req.params;
|
||||
const body = req.body as VanityUrlSchema;
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
Channel,
|
||||
ChannelType,
|
||||
@@ -26,7 +27,6 @@ import {
|
||||
VoiceStateUpdateEvent,
|
||||
VoiceStateUpdateSchema,
|
||||
} from "@spacebar/util";
|
||||
import { route } from "@spacebar/api";
|
||||
import { Request, Response, Router } from "express";
|
||||
|
||||
const router = Router();
|
||||
@@ -34,7 +34,7 @@ const router = Router();
|
||||
|
||||
router.patch(
|
||||
"/",
|
||||
route({ body: "VoiceStateUpdateSchema" }),
|
||||
route({ requestBody: "VoiceStateUpdateSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const body = req.body as VoiceStateUpdateSchema;
|
||||
const { guild_id } = req.params;
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Request, Response, Router } from "express";
|
||||
import { Guild, Member, GuildUpdateWelcomeScreenSchema } from "@spacebar/util";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { route } from "@spacebar/api";
|
||||
import { Guild, GuildUpdateWelcomeScreenSchema, Member } from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
|
||||
const router: Router = Router();
|
||||
|
||||
@@ -35,7 +35,7 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
router.patch(
|
||||
"/",
|
||||
route({
|
||||
body: "GuildUpdateWelcomeScreenSchema",
|
||||
requestBody: "GuildUpdateWelcomeScreenSchema",
|
||||
permission: "MANAGE_GUILD",
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Request, Response, Router } from "express";
|
||||
import { Guild, WidgetModifySchema } from "@spacebar/util";
|
||||
import { route } from "@spacebar/api";
|
||||
import { Guild, WidgetModifySchema } from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
|
||||
const router: Router = Router();
|
||||
|
||||
@@ -37,7 +37,7 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
// https://discord.com/developers/docs/resources/guild#modify-guild-widget
|
||||
router.patch(
|
||||
"/",
|
||||
route({ body: "WidgetModifySchema", permission: "MANAGE_GUILD" }),
|
||||
route({ requestBody: "WidgetModifySchema", permission: "MANAGE_GUILD" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const body = req.body as WidgetModifySchema;
|
||||
const { guild_id } = req.params;
|
||||
|
||||
@@ -16,16 +16,16 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Router, Request, Response } from "express";
|
||||
import {
|
||||
Guild,
|
||||
Config,
|
||||
getRights,
|
||||
Member,
|
||||
DiscordApiErrors,
|
||||
GuildCreateSchema,
|
||||
} from "@spacebar/util";
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
Config,
|
||||
DiscordApiErrors,
|
||||
Guild,
|
||||
GuildCreateSchema,
|
||||
Member,
|
||||
getRights,
|
||||
} from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
|
||||
const router: Router = Router();
|
||||
|
||||
@@ -33,7 +33,7 @@ const router: Router = Router();
|
||||
|
||||
router.post(
|
||||
"/",
|
||||
route({ body: "GuildCreateSchema", right: "CREATE_GUILDS" }),
|
||||
route({ requestBody: "GuildCreateSchema", right: "CREATE_GUILDS" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const body = req.body as GuildCreateSchema;
|
||||
|
||||
|
||||
@@ -16,18 +16,18 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Request, Response, Router } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
Template,
|
||||
Config,
|
||||
DiscordApiErrors,
|
||||
Guild,
|
||||
GuildTemplateCreateSchema,
|
||||
Member,
|
||||
Role,
|
||||
Snowflake,
|
||||
Config,
|
||||
Member,
|
||||
GuildTemplateCreateSchema,
|
||||
Template,
|
||||
} from "@spacebar/util";
|
||||
import { route } from "@spacebar/api";
|
||||
import { DiscordApiErrors } from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
import fetch from "node-fetch";
|
||||
const router: Router = Router();
|
||||
|
||||
@@ -81,7 +81,7 @@ router.get("/:code", route({}), async (req: Request, res: Response) => {
|
||||
|
||||
router.post(
|
||||
"/:code",
|
||||
route({ body: "GuildTemplateCreateSchema" }),
|
||||
route({ requestBody: "GuildTemplateCreateSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const {
|
||||
enabled,
|
||||
|
||||
@@ -16,18 +16,18 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Router, Request, Response } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
ApiError,
|
||||
Application,
|
||||
ApplicationAuthorizeSchema,
|
||||
getPermission,
|
||||
DiscordApiErrors,
|
||||
Member,
|
||||
Permissions,
|
||||
User,
|
||||
getPermission,
|
||||
} from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
const router = Router();
|
||||
|
||||
// TODO: scopes, other oauth types
|
||||
@@ -135,7 +135,7 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
|
||||
router.post(
|
||||
"/",
|
||||
route({ body: "ApplicationAuthorizeSchema" }),
|
||||
route({ requestBody: "ApplicationAuthorizeSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const body = req.body as ApplicationAuthorizeSchema;
|
||||
// const { client_id, scope, response_type, redirect_url } = req.query;
|
||||
|
||||
@@ -16,14 +16,14 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Router, Request, Response } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import { AckBulkSchema, ReadState } from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
const router = Router();
|
||||
|
||||
router.post(
|
||||
"/",
|
||||
route({ body: "AckBulkSchema" }),
|
||||
route({ requestBody: "AckBulkSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const body = req.body as AckBulkSchema;
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ router.get(
|
||||
|
||||
router.patch(
|
||||
"/",
|
||||
route({ body: "UserProfileModifySchema" }),
|
||||
route({ requestBody: "UserProfileModifySchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const body = req.body as UserProfileModifySchema;
|
||||
|
||||
|
||||
@@ -16,14 +16,14 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Request, Response, Router } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
Recipient,
|
||||
DmChannelDTO,
|
||||
Channel,
|
||||
DmChannelCreateSchema,
|
||||
DmChannelDTO,
|
||||
Recipient,
|
||||
} from "@spacebar/util";
|
||||
import { route } from "@spacebar/api";
|
||||
import { Request, Response, Router } from "express";
|
||||
|
||||
const router: Router = Router();
|
||||
|
||||
@@ -41,7 +41,7 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
|
||||
router.post(
|
||||
"/",
|
||||
route({ body: "DmChannelCreateSchema" }),
|
||||
route({ requestBody: "DmChannelCreateSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const body = req.body as DmChannelCreateSchema;
|
||||
res.json(
|
||||
|
||||
@@ -29,7 +29,7 @@ const router = Router();
|
||||
// TODO: connection update schema
|
||||
router.patch(
|
||||
"/",
|
||||
route({ body: "ConnectionUpdateSchema" }),
|
||||
route({ requestBody: "ConnectionUpdateSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const { connection_name, connection_id } = req.params;
|
||||
const body = req.body as ConnectionUpdateSchema;
|
||||
|
||||
@@ -16,14 +16,14 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Router, Response, Request } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
Channel,
|
||||
Member,
|
||||
OrmUtils,
|
||||
UserGuildSettingsSchema,
|
||||
} from "@spacebar/util";
|
||||
import { route } from "@spacebar/api";
|
||||
import { Request, Response, Router } from "express";
|
||||
|
||||
const router = Router();
|
||||
|
||||
@@ -38,7 +38,7 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
|
||||
router.patch(
|
||||
"/",
|
||||
route({ body: "UserGuildSettingsSchema" }),
|
||||
route({ requestBody: "UserGuildSettingsSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const body = req.body as UserGuildSettingsSchema;
|
||||
|
||||
|
||||
@@ -16,21 +16,21 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Router, Request, Response } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
User,
|
||||
PrivateUserProjection,
|
||||
emitEvent,
|
||||
UserUpdateEvent,
|
||||
handleFile,
|
||||
FieldErrors,
|
||||
adjustEmail,
|
||||
Config,
|
||||
UserModifySchema,
|
||||
emitEvent,
|
||||
FieldErrors,
|
||||
generateToken,
|
||||
handleFile,
|
||||
PrivateUserProjection,
|
||||
User,
|
||||
UserModifySchema,
|
||||
UserUpdateEvent,
|
||||
} from "@spacebar/util";
|
||||
import { route } from "@spacebar/api";
|
||||
import bcrypt from "bcrypt";
|
||||
import { Request, Response, Router } from "express";
|
||||
|
||||
const router: Router = Router();
|
||||
|
||||
@@ -45,7 +45,7 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
|
||||
router.patch(
|
||||
"/",
|
||||
route({ body: "UserModifySchema" }),
|
||||
route({ requestBody: "UserModifySchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const body = req.body as UserModifySchema;
|
||||
|
||||
|
||||
@@ -16,21 +16,21 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Router, Request, Response } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
BackupCode,
|
||||
generateMfaBackupCodes,
|
||||
User,
|
||||
CodesVerificationSchema,
|
||||
DiscordApiErrors,
|
||||
User,
|
||||
generateMfaBackupCodes,
|
||||
} from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.post(
|
||||
"/",
|
||||
route({ body: "CodesVerificationSchema" }),
|
||||
route({ requestBody: "CodesVerificationSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
// const { key, nonce, regenerate } = req.body as CodesVerificationSchema;
|
||||
const { regenerate } = req.body as CodesVerificationSchema;
|
||||
|
||||
@@ -16,16 +16,16 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Router, Request, Response } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
BackupCode,
|
||||
FieldErrors,
|
||||
generateMfaBackupCodes,
|
||||
User,
|
||||
MfaCodesSchema,
|
||||
User,
|
||||
} from "@spacebar/util";
|
||||
import bcrypt from "bcrypt";
|
||||
import { Request, Response, Router } from "express";
|
||||
|
||||
const router = Router();
|
||||
|
||||
@@ -33,7 +33,7 @@ const router = Router();
|
||||
|
||||
router.post(
|
||||
"/",
|
||||
route({ body: "MfaCodesSchema" }),
|
||||
route({ requestBody: "MfaCodesSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const { password, regenerate } = req.body as MfaCodesSchema;
|
||||
|
||||
|
||||
@@ -16,22 +16,22 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Router, Request, Response } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import { verifyToken } from "node-2fa";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import {
|
||||
User,
|
||||
generateToken,
|
||||
BackupCode,
|
||||
TotpDisableSchema,
|
||||
User,
|
||||
generateToken,
|
||||
} from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { verifyToken } from "node-2fa";
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.post(
|
||||
"/",
|
||||
route({ body: "TotpDisableSchema" }),
|
||||
route({ requestBody: "TotpDisableSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const body = req.body as TotpDisableSchema;
|
||||
|
||||
|
||||
@@ -16,15 +16,15 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Router, Request, Response } from "express";
|
||||
import {
|
||||
User,
|
||||
generateToken,
|
||||
generateMfaBackupCodes,
|
||||
TotpEnableSchema,
|
||||
} from "@spacebar/util";
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
TotpEnableSchema,
|
||||
User,
|
||||
generateMfaBackupCodes,
|
||||
generateToken,
|
||||
} from "@spacebar/util";
|
||||
import bcrypt from "bcrypt";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { verifyToken } from "node-2fa";
|
||||
|
||||
@@ -32,7 +32,7 @@ const router = Router();
|
||||
|
||||
router.post(
|
||||
"/",
|
||||
route({ body: "TotpEnableSchema" }),
|
||||
route({ requestBody: "TotpEnableSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const body = req.body as TotpEnableSchema;
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
|
||||
router.post(
|
||||
"/",
|
||||
route({ body: "WebAuthnPostSchema" }),
|
||||
route({ requestBody: "WebAuthnPostSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
if (!WebAuthn.fido2) {
|
||||
// TODO: I did this for typescript and I can't use !
|
||||
|
||||
@@ -16,20 +16,20 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import {
|
||||
RelationshipAddEvent,
|
||||
User,
|
||||
PublicUserProjection,
|
||||
RelationshipType,
|
||||
RelationshipRemoveEvent,
|
||||
emitEvent,
|
||||
Relationship,
|
||||
Config,
|
||||
} from "@spacebar/util";
|
||||
import { Router, Response, Request } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { DiscordApiErrors } from "@spacebar/util";
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
Config,
|
||||
DiscordApiErrors,
|
||||
PublicUserProjection,
|
||||
Relationship,
|
||||
RelationshipAddEvent,
|
||||
RelationshipRemoveEvent,
|
||||
RelationshipType,
|
||||
User,
|
||||
emitEvent,
|
||||
} from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
|
||||
const router = Router();
|
||||
|
||||
@@ -60,7 +60,7 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
|
||||
router.put(
|
||||
"/:id",
|
||||
route({ body: "RelationshipPutSchema" }),
|
||||
route({ requestBody: "RelationshipPutSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
return await updateRelationship(
|
||||
req,
|
||||
@@ -77,7 +77,7 @@ router.put(
|
||||
|
||||
router.post(
|
||||
"/",
|
||||
route({ body: "RelationshipPostSchema" }),
|
||||
route({ requestBody: "RelationshipPostSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
return await updateRelationship(
|
||||
req,
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Router, Response, Request } from "express";
|
||||
import { User, UserSettingsSchema } from "@spacebar/util";
|
||||
import { route } from "@spacebar/api";
|
||||
import { User, UserSettingsSchema } from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
|
||||
const router = Router();
|
||||
|
||||
@@ -32,7 +32,7 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
|
||||
router.patch(
|
||||
"/",
|
||||
route({ body: "UserSettingsSchema" }),
|
||||
route({ requestBody: "UserSettingsSchema" }),
|
||||
async (req: Request, res: Response) => {
|
||||
const body = req.body as UserSettingsSchema;
|
||||
if (body.locale === "en") body.locale = "en-US"; // fix discord client crash on unkown locale
|
||||
|
||||
@@ -52,27 +52,31 @@ export type RouteResponse = {
|
||||
export interface RouteOptions {
|
||||
permission?: PermissionResolvable;
|
||||
right?: RightResolvable;
|
||||
body?: `${string}Schema`; // typescript interface name
|
||||
requestBody?: `${string}Schema`; // typescript interface name
|
||||
responses?: {
|
||||
[status: number]: {
|
||||
// body?: `${string}Response`;
|
||||
body?: string;
|
||||
};
|
||||
};
|
||||
test?: {
|
||||
response?: RouteResponse;
|
||||
body?: unknown;
|
||||
path?: string;
|
||||
event?: EVENT | EVENT[];
|
||||
headers?: Record<string, string>;
|
||||
};
|
||||
event?: EVENT | EVENT[];
|
||||
summary?: string;
|
||||
description?: string;
|
||||
// test?: {
|
||||
// response?: RouteResponse;
|
||||
// body?: unknown;
|
||||
// path?: string;
|
||||
// event?: EVENT | EVENT[];
|
||||
// headers?: Record<string, string>;
|
||||
// };
|
||||
}
|
||||
|
||||
export function route(opts: RouteOptions) {
|
||||
let validate: AnyValidateFunction | undefined;
|
||||
if (opts.body) {
|
||||
validate = ajv.getSchema(opts.body);
|
||||
if (!validate) throw new Error(`Body schema ${opts.body} not found`);
|
||||
if (opts.requestBody) {
|
||||
validate = ajv.getSchema(opts.requestBody);
|
||||
if (!validate)
|
||||
throw new Error(`Body schema ${opts.requestBody} not found`);
|
||||
}
|
||||
|
||||
return async (req: Request, res: Response, next: NextFunction) => {
|
||||
|
||||
Reference in new issue
Block a user