channels
This commit is contained in:
parent
3335f16ad1
commit
4a7811a25c
128846
assets/schemas.json
128846
assets/schemas.json
File diff suppressed because it is too large
Load Diff
@ -16,18 +16,18 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
Channel,
|
||||
ChannelDeleteEvent,
|
||||
ChannelModifySchema,
|
||||
ChannelType,
|
||||
ChannelUpdateEvent,
|
||||
emitEvent,
|
||||
Recipient,
|
||||
emitEvent,
|
||||
handleFile,
|
||||
ChannelModifySchema,
|
||||
} from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
|
||||
const router: Router = Router();
|
||||
// TODO: delete channel
|
||||
@ -35,7 +35,15 @@ const router: Router = Router();
|
||||
|
||||
router.get(
|
||||
"/",
|
||||
route({ permission: "VIEW_CHANNEL" }),
|
||||
route({
|
||||
permission: "VIEW_CHANNEL",
|
||||
responses: {
|
||||
200: {
|
||||
body: "Channel",
|
||||
},
|
||||
404: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { channel_id } = req.params;
|
||||
|
||||
@ -49,7 +57,15 @@ router.get(
|
||||
|
||||
router.delete(
|
||||
"/",
|
||||
route({ permission: "MANAGE_CHANNELS" }),
|
||||
route({
|
||||
permission: "MANAGE_CHANNELS",
|
||||
responses: {
|
||||
200: {
|
||||
body: "Channel",
|
||||
},
|
||||
404: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { channel_id } = req.params;
|
||||
|
||||
@ -90,7 +106,19 @@ router.delete(
|
||||
|
||||
router.patch(
|
||||
"/",
|
||||
route({ body: "ChannelModifySchema", permission: "MANAGE_CHANNELS" }),
|
||||
route({
|
||||
body: "ChannelModifySchema",
|
||||
permission: "MANAGE_CHANNELS",
|
||||
responses: {
|
||||
200: {
|
||||
body: "Channel",
|
||||
},
|
||||
404: {},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const payload = req.body as ChannelModifySchema;
|
||||
const { channel_id } = req.params;
|
||||
|
@ -16,19 +16,18 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Router, Request, Response } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { route } from "@spacebar/api";
|
||||
import { random } from "@spacebar/api";
|
||||
import { random, route } from "@spacebar/api";
|
||||
import {
|
||||
Channel,
|
||||
Guild,
|
||||
Invite,
|
||||
InviteCreateEvent,
|
||||
emitEvent,
|
||||
User,
|
||||
Guild,
|
||||
PublicInviteRelation,
|
||||
User,
|
||||
emitEvent,
|
||||
} from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { isTextChannel } from "./messages";
|
||||
|
||||
const router: Router = Router();
|
||||
@ -39,6 +38,15 @@ router.post(
|
||||
body: "InviteCreateSchema",
|
||||
permission: "CREATE_INSTANT_INVITE",
|
||||
right: "CREATE_INVITES",
|
||||
responses: {
|
||||
201: {
|
||||
body: "Invite",
|
||||
},
|
||||
404: {},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { user_id } = req;
|
||||
@ -84,7 +92,15 @@ router.post(
|
||||
|
||||
router.get(
|
||||
"/",
|
||||
route({ permission: "MANAGE_CHANNELS" }),
|
||||
route({
|
||||
permission: "MANAGE_CHANNELS",
|
||||
responses: {
|
||||
200: {
|
||||
body: "ChannelInvitesResponse",
|
||||
},
|
||||
404: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { channel_id } = req.params;
|
||||
const channel = await Channel.findOneOrFail({
|
||||
|
@ -16,6 +16,7 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
emitEvent,
|
||||
getPermission,
|
||||
@ -23,7 +24,6 @@ import {
|
||||
ReadState,
|
||||
} from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
|
||||
const router = Router();
|
||||
|
||||
@ -33,7 +33,13 @@ const router = Router();
|
||||
|
||||
router.post(
|
||||
"/",
|
||||
route({ body: "MessageAcknowledgeSchema" }),
|
||||
route({
|
||||
body: "MessageAcknowledgeSchema",
|
||||
responses: {
|
||||
200: {},
|
||||
403: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { channel_id, message_id } = req.params;
|
||||
|
||||
|
@ -16,14 +16,21 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Router, Response, Request } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import { Request, Response, Router } from "express";
|
||||
|
||||
const router = Router();
|
||||
|
||||
router.post(
|
||||
"/",
|
||||
route({ permission: "MANAGE_MESSAGES" }),
|
||||
route({
|
||||
permission: "MANAGE_MESSAGES",
|
||||
responses: {
|
||||
200: {
|
||||
body: "Message",
|
||||
},
|
||||
},
|
||||
}),
|
||||
(req: Request, res: Response) => {
|
||||
// TODO:
|
||||
res.json({
|
||||
|
@ -19,24 +19,23 @@
|
||||
import {
|
||||
Attachment,
|
||||
Channel,
|
||||
emitEvent,
|
||||
SpacebarApiErrors,
|
||||
getPermission,
|
||||
getRights,
|
||||
Message,
|
||||
MessageCreateEvent,
|
||||
MessageCreateSchema,
|
||||
MessageDeleteEvent,
|
||||
MessageEditSchema,
|
||||
MessageUpdateEvent,
|
||||
Snowflake,
|
||||
SpacebarApiErrors,
|
||||
emitEvent,
|
||||
getPermission,
|
||||
getRights,
|
||||
uploadFile,
|
||||
MessageCreateSchema,
|
||||
MessageEditSchema,
|
||||
} from "@spacebar/util";
|
||||
import { Router, Response, Request } from "express";
|
||||
import multer from "multer";
|
||||
import { route } from "@spacebar/api";
|
||||
import { handleMessage, postHandleMessage } from "@spacebar/api";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import multer from "multer";
|
||||
import { handleMessage, postHandleMessage, route } from "../../../../../util";
|
||||
|
||||
const router = Router();
|
||||
// TODO: message content/embed string length limit
|
||||
@ -56,6 +55,16 @@ router.patch(
|
||||
body: "MessageEditSchema",
|
||||
permission: "SEND_MESSAGES",
|
||||
right: "SEND_MESSAGES",
|
||||
responses: {
|
||||
200: {
|
||||
body: "Message",
|
||||
},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
403: {},
|
||||
404: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { message_id, channel_id } = req.params;
|
||||
@ -146,6 +155,16 @@ router.put(
|
||||
body: "MessageCreateSchema",
|
||||
permission: "SEND_MESSAGES",
|
||||
right: "SEND_BACKDATED_EVENTS",
|
||||
responses: {
|
||||
200: {
|
||||
body: "Message",
|
||||
},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
403: {},
|
||||
404: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { channel_id, message_id } = req.params;
|
||||
@ -230,7 +249,19 @@ router.put(
|
||||
|
||||
router.get(
|
||||
"/",
|
||||
route({ permission: "VIEW_CHANNEL" }),
|
||||
route({
|
||||
permission: "VIEW_CHANNEL",
|
||||
responses: {
|
||||
200: {
|
||||
body: "Message",
|
||||
},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
403: {},
|
||||
404: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { message_id, channel_id } = req.params;
|
||||
|
||||
@ -252,11 +283,26 @@ router.get(
|
||||
},
|
||||
);
|
||||
|
||||
router.delete("/", route({}), async (req: Request, res: Response) => {
|
||||
router.delete(
|
||||
"/",
|
||||
route({
|
||||
responses: {
|
||||
204: {},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
404: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { message_id, channel_id } = req.params;
|
||||
|
||||
const channel = await Channel.findOneOrFail({ where: { id: channel_id } });
|
||||
const message = await Message.findOneOrFail({ where: { id: message_id } });
|
||||
const channel = await Channel.findOneOrFail({
|
||||
where: { id: channel_id },
|
||||
});
|
||||
const message = await Message.findOneOrFail({
|
||||
where: { id: message_id },
|
||||
});
|
||||
|
||||
const rights = await getRights(req.user_id);
|
||||
|
||||
@ -284,6 +330,7 @@ router.delete("/", route({}), async (req: Request, res: Response) => {
|
||||
} as MessageDeleteEvent);
|
||||
|
||||
res.sendStatus(204);
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
export default router;
|
||||
|
@ -16,6 +16,7 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
Channel,
|
||||
emitEvent,
|
||||
@ -32,8 +33,7 @@ import {
|
||||
PublicUserProjection,
|
||||
User,
|
||||
} from "@spacebar/util";
|
||||
import { route } from "@spacebar/api";
|
||||
import { Router, Response, Request } from "express";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { In } from "typeorm";
|
||||
|
||||
@ -57,7 +57,17 @@ function getEmoji(emoji: string): PartialEmoji {
|
||||
|
||||
router.delete(
|
||||
"/",
|
||||
route({ permission: "MANAGE_MESSAGES" }),
|
||||
route({
|
||||
permission: "MANAGE_MESSAGES",
|
||||
responses: {
|
||||
204: {},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
404: {},
|
||||
403: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { message_id, channel_id } = req.params;
|
||||
|
||||
@ -83,7 +93,17 @@ router.delete(
|
||||
|
||||
router.delete(
|
||||
"/:emoji",
|
||||
route({ permission: "MANAGE_MESSAGES" }),
|
||||
route({
|
||||
permission: "MANAGE_MESSAGES",
|
||||
responses: {
|
||||
204: {},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
404: {},
|
||||
403: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { message_id, channel_id } = req.params;
|
||||
const emoji = getEmoji(req.params.emoji);
|
||||
@ -120,7 +140,19 @@ router.delete(
|
||||
|
||||
router.get(
|
||||
"/:emoji",
|
||||
route({ permission: "VIEW_CHANNEL" }),
|
||||
route({
|
||||
permission: "VIEW_CHANNEL",
|
||||
responses: {
|
||||
200: {
|
||||
body: "UserPublic",
|
||||
},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
404: {},
|
||||
403: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { message_id, channel_id } = req.params;
|
||||
const emoji = getEmoji(req.params.emoji);
|
||||
@ -148,7 +180,18 @@ router.get(
|
||||
|
||||
router.put(
|
||||
"/:emoji/:user_id",
|
||||
route({ permission: "READ_MESSAGE_HISTORY", right: "SELF_ADD_REACTIONS" }),
|
||||
route({
|
||||
permission: "READ_MESSAGE_HISTORY",
|
||||
right: "SELF_ADD_REACTIONS",
|
||||
responses: {
|
||||
204: {},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
404: {},
|
||||
403: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { message_id, channel_id, user_id } = req.params;
|
||||
if (user_id !== "@me") throw new HTTPError("Invalid user");
|
||||
@ -219,7 +262,16 @@ router.put(
|
||||
|
||||
router.delete(
|
||||
"/:emoji/:user_id",
|
||||
route({}),
|
||||
route({
|
||||
responses: {
|
||||
204: {},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
404: {},
|
||||
403: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
let { user_id } = req.params;
|
||||
const { message_id, channel_id } = req.params;
|
||||
|
@ -16,18 +16,18 @@
|
||||
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,
|
||||
Config,
|
||||
emitEvent,
|
||||
getPermission,
|
||||
getRights,
|
||||
MessageDeleteBulkEvent,
|
||||
Message,
|
||||
MessageDeleteBulkEvent,
|
||||
} from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { route } from "@spacebar/api";
|
||||
|
||||
const router: Router = Router();
|
||||
|
||||
@ -38,7 +38,17 @@ export default router;
|
||||
// https://discord.com/developers/docs/resources/channel#bulk-delete-messages
|
||||
router.post(
|
||||
"/",
|
||||
route({ body: "BulkDeleteSchema" }),
|
||||
route({
|
||||
body: "BulkDeleteSchema",
|
||||
responses: {
|
||||
204: {},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
403: {},
|
||||
404: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { channel_id } = req.params;
|
||||
const channel = await Channel.findOneOrFail({
|
||||
|
@ -16,7 +16,7 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Router, Response, Request } from "express";
|
||||
import { handleMessage, postHandleMessage, route } from "@spacebar/api";
|
||||
import {
|
||||
Attachment,
|
||||
Channel,
|
||||
@ -26,19 +26,19 @@ import {
|
||||
emitEvent,
|
||||
FieldErrors,
|
||||
getPermission,
|
||||
Member,
|
||||
Message,
|
||||
MessageCreateEvent,
|
||||
Snowflake,
|
||||
uploadFile,
|
||||
Member,
|
||||
MessageCreateSchema,
|
||||
Reaction,
|
||||
ReadState,
|
||||
Rights,
|
||||
Reaction,
|
||||
Snowflake,
|
||||
uploadFile,
|
||||
User,
|
||||
} from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { handleMessage, postHandleMessage, route } from "@spacebar/api";
|
||||
import multer from "multer";
|
||||
import { FindManyOptions, FindOperator, LessThan, MoreThan } from "typeorm";
|
||||
import { URL } from "url";
|
||||
@ -73,7 +73,21 @@ export function isTextChannel(type: ChannelType): boolean {
|
||||
|
||||
// https://discord.com/developers/docs/resources/channel#create-message
|
||||
// get messages
|
||||
router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
router.get(
|
||||
"/",
|
||||
route({
|
||||
responses: {
|
||||
200: {
|
||||
body: "ChannelMessagesResponse",
|
||||
},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
403: {},
|
||||
404: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const channel_id = req.params.channel_id;
|
||||
const channel = await Channel.findOneOrFail({
|
||||
where: { id: channel_id },
|
||||
@ -148,7 +162,7 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
x.author = User.create({
|
||||
id: "4",
|
||||
discriminator: "0000",
|
||||
username: "Spacebar Ghost",
|
||||
username: "Fosscord Ghost",
|
||||
public_flags: 0,
|
||||
});
|
||||
x.attachments?.forEach((y: Attachment) => {
|
||||
@ -174,7 +188,8 @@ router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
return x;
|
||||
}),
|
||||
);
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
// TODO: config max upload size
|
||||
const messageUpload = multer({
|
||||
@ -208,6 +223,16 @@ router.post(
|
||||
body: "MessageCreateSchema",
|
||||
permission: "SEND_MESSAGES",
|
||||
right: "SEND_MESSAGES",
|
||||
responses: {
|
||||
200: {
|
||||
body: "Message",
|
||||
},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
403: {},
|
||||
404: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { channel_id } = req.params;
|
||||
|
@ -19,13 +19,13 @@
|
||||
import {
|
||||
Channel,
|
||||
ChannelPermissionOverwrite,
|
||||
ChannelPermissionOverwriteSchema,
|
||||
ChannelUpdateEvent,
|
||||
emitEvent,
|
||||
Member,
|
||||
Role,
|
||||
ChannelPermissionOverwriteSchema,
|
||||
} from "@spacebar/util";
|
||||
import { Router, Response, Request } from "express";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
|
||||
import { route } from "@spacebar/api";
|
||||
@ -38,6 +38,12 @@ router.put(
|
||||
route({
|
||||
body: "ChannelPermissionOverwriteSchema",
|
||||
permission: "MANAGE_ROLES",
|
||||
responses: {
|
||||
204: {},
|
||||
404: {},
|
||||
501: {},
|
||||
400: { body: "APIErrorResponse" },
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { channel_id, overwrite_id } = req.params;
|
||||
@ -92,7 +98,7 @@ router.put(
|
||||
// TODO: check permission hierarchy
|
||||
router.delete(
|
||||
"/:overwrite_id",
|
||||
route({ permission: "MANAGE_ROLES" }),
|
||||
route({ permission: "MANAGE_ROLES", responses: { 204: {}, 404: {} } }),
|
||||
async (req: Request, res: Response) => {
|
||||
const { channel_id, overwrite_id } = req.params;
|
||||
|
||||
|
@ -16,23 +16,33 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
Channel,
|
||||
ChannelPinsUpdateEvent,
|
||||
Config,
|
||||
DiscordApiErrors,
|
||||
emitEvent,
|
||||
Message,
|
||||
MessageUpdateEvent,
|
||||
DiscordApiErrors,
|
||||
} from "@spacebar/util";
|
||||
import { Router, Request, Response } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import { Request, Response, Router } from "express";
|
||||
|
||||
const router: Router = Router();
|
||||
|
||||
router.put(
|
||||
"/:message_id",
|
||||
route({ permission: "VIEW_CHANNEL" }),
|
||||
route({
|
||||
permission: "VIEW_CHANNEL",
|
||||
responses: {
|
||||
204: {},
|
||||
403: {},
|
||||
404: {},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { channel_id, message_id } = req.params;
|
||||
|
||||
@ -74,7 +84,17 @@ router.put(
|
||||
|
||||
router.delete(
|
||||
"/:message_id",
|
||||
route({ permission: "VIEW_CHANNEL" }),
|
||||
route({
|
||||
permission: "VIEW_CHANNEL",
|
||||
responses: {
|
||||
204: {},
|
||||
403: {},
|
||||
404: {},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { channel_id, message_id } = req.params;
|
||||
|
||||
@ -114,7 +134,17 @@ router.delete(
|
||||
|
||||
router.get(
|
||||
"/",
|
||||
route({ permission: ["READ_MESSAGE_HISTORY"] }),
|
||||
route({
|
||||
permission: ["READ_MESSAGE_HISTORY"],
|
||||
responses: {
|
||||
200: {
|
||||
body: "ChannelPinsResponse",
|
||||
},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { channel_id } = req.params;
|
||||
|
||||
|
@ -16,20 +16,20 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { route } from "@spacebar/api";
|
||||
import { isTextChannel } from "./messages";
|
||||
import { FindManyOptions, Between, Not, FindOperator } from "typeorm";
|
||||
import {
|
||||
Channel,
|
||||
emitEvent,
|
||||
getPermission,
|
||||
getRights,
|
||||
Message,
|
||||
MessageDeleteBulkEvent,
|
||||
PurgeSchema,
|
||||
emitEvent,
|
||||
getPermission,
|
||||
getRights,
|
||||
} from "@spacebar/util";
|
||||
import { Router, Response, Request } from "express";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { Between, FindManyOptions, FindOperator, Not } from "typeorm";
|
||||
import { isTextChannel } from "./messages";
|
||||
|
||||
const router: Router = Router();
|
||||
|
||||
@ -42,6 +42,14 @@ router.post(
|
||||
"/",
|
||||
route({
|
||||
/*body: "PurgeSchema",*/
|
||||
responses: {
|
||||
204: {},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
404: {},
|
||||
403: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { channel_id } = req.params;
|
||||
|
@ -16,7 +16,7 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Request, Response, Router } from "express";
|
||||
import { route } from "@spacebar/api";
|
||||
import {
|
||||
Channel,
|
||||
ChannelRecipientAddEvent,
|
||||
@ -28,11 +28,19 @@ import {
|
||||
Recipient,
|
||||
User,
|
||||
} from "@spacebar/util";
|
||||
import { route } from "@spacebar/api";
|
||||
import { Request, Response, Router } from "express";
|
||||
|
||||
const router: Router = Router();
|
||||
|
||||
router.put("/:user_id", route({}), async (req: Request, res: Response) => {
|
||||
router.put(
|
||||
"/:user_id",
|
||||
route({
|
||||
responses: {
|
||||
201: {},
|
||||
404: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { channel_id, user_id } = req.params;
|
||||
const channel = await Channel.findOneOrFail({
|
||||
where: { id: channel_id },
|
||||
@ -79,9 +87,18 @@ router.put("/:user_id", route({}), async (req: Request, res: Response) => {
|
||||
} as ChannelRecipientAddEvent);
|
||||
return res.sendStatus(204);
|
||||
}
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
router.delete("/:user_id", route({}), async (req: Request, res: Response) => {
|
||||
router.delete(
|
||||
"/:user_id",
|
||||
route({
|
||||
responses: {
|
||||
204: {},
|
||||
404: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { channel_id, user_id } = req.params;
|
||||
const channel = await Channel.findOneOrFail({
|
||||
where: { id: channel_id },
|
||||
@ -102,6 +119,7 @@ router.delete("/:user_id", route({}), async (req: Request, res: Response) => {
|
||||
await Channel.removeRecipientFromChannel(channel, user_id);
|
||||
|
||||
return res.sendStatus(204);
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
export default router;
|
||||
|
@ -16,15 +16,22 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { Channel, emitEvent, Member, TypingStartEvent } from "@spacebar/util";
|
||||
import { route } from "@spacebar/api";
|
||||
import { Router, Request, Response } from "express";
|
||||
import { Channel, emitEvent, Member, TypingStartEvent } from "@spacebar/util";
|
||||
import { Request, Response, Router } from "express";
|
||||
|
||||
const router: Router = Router();
|
||||
|
||||
router.post(
|
||||
"/",
|
||||
route({ permission: "SEND_MESSAGES" }),
|
||||
route({
|
||||
permission: "SEND_MESSAGES",
|
||||
responses: {
|
||||
204: {},
|
||||
404: {},
|
||||
403: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const { channel_id } = req.params;
|
||||
const user_id = req.user_id;
|
||||
|
@ -16,34 +16,56 @@
|
||||
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,
|
||||
Config,
|
||||
handleFile,
|
||||
trimSpecial,
|
||||
DiscordApiErrors,
|
||||
User,
|
||||
Webhook,
|
||||
WebhookCreateSchema,
|
||||
WebhookType,
|
||||
handleFile,
|
||||
trimSpecial,
|
||||
} from "@spacebar/util";
|
||||
import crypto from "crypto";
|
||||
import { Request, Response, Router } from "express";
|
||||
import { HTTPError } from "lambert-server";
|
||||
import { isTextChannel } from "./messages/index";
|
||||
import { DiscordApiErrors } from "@spacebar/util";
|
||||
import crypto from "crypto";
|
||||
|
||||
const router: Router = Router();
|
||||
|
||||
//TODO: implement webhooks
|
||||
router.get("/", route({}), async (req: Request, res: Response) => {
|
||||
router.get(
|
||||
"/",
|
||||
route({
|
||||
responses: {
|
||||
200: {
|
||||
body: "ChannelWebhooksResponse",
|
||||
},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
res.json([]);
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
// TODO: use Image Data Type for avatar instead of String
|
||||
router.post(
|
||||
"/",
|
||||
route({ body: "WebhookCreateSchema", permission: "MANAGE_WEBHOOKS" }),
|
||||
route({
|
||||
body: "WebhookCreateSchema",
|
||||
permission: "MANAGE_WEBHOOKS",
|
||||
responses: {
|
||||
200: {
|
||||
body: "WebhookCreateResponse",
|
||||
},
|
||||
400: {
|
||||
body: "APIErrorResponse",
|
||||
},
|
||||
403: {},
|
||||
},
|
||||
}),
|
||||
async (req: Request, res: Response) => {
|
||||
const channel_id = req.params.channel_id;
|
||||
const channel = await Channel.findOneOrFail({
|
||||
|
3
src/util/schemas/responses/ChannelInvitesResponse.ts
Normal file
3
src/util/schemas/responses/ChannelInvitesResponse.ts
Normal file
@ -0,0 +1,3 @@
|
||||
import { Invite } from "../../entities";
|
||||
|
||||
export type ChannelInvitesResponse = Invite[];
|
3
src/util/schemas/responses/ChannelMessagesResponse.ts
Normal file
3
src/util/schemas/responses/ChannelMessagesResponse.ts
Normal file
@ -0,0 +1,3 @@
|
||||
import { Message } from "../../entities";
|
||||
|
||||
export type ChannelMessagesResponse = Message[];
|
3
src/util/schemas/responses/ChannelPinsResponse.ts
Normal file
3
src/util/schemas/responses/ChannelPinsResponse.ts
Normal file
@ -0,0 +1,3 @@
|
||||
import { Message } from "../../entities";
|
||||
|
||||
export type ChannelPinsResponse = Message[];
|
3
src/util/schemas/responses/ChannelWebhooksResponse.ts
Normal file
3
src/util/schemas/responses/ChannelWebhooksResponse.ts
Normal file
@ -0,0 +1,3 @@
|
||||
import { Webhook } from "../../entities";
|
||||
|
||||
export type ChannelWebhooksResponse = Webhook[];
|
6
src/util/schemas/responses/WebhookCreateResponse.ts
Normal file
6
src/util/schemas/responses/WebhookCreateResponse.ts
Normal file
@ -0,0 +1,6 @@
|
||||
import { User, Webhook } from "../../entities";
|
||||
|
||||
export interface WebhookCreateResponse {
|
||||
user: User;
|
||||
hook: Webhook;
|
||||
}
|
@ -6,6 +6,10 @@ export * from "./ApplicationSkusResponse";
|
||||
export * from "./ApplicationsResponse";
|
||||
export * from "./BackupCodesChallengeResponse";
|
||||
export * from "./CaptchaRequiredResponse";
|
||||
export * from "./ChannelInvitesResponse";
|
||||
export * from "./ChannelPinsResponse";
|
||||
export * from "./ChannelWebhooksResponse";
|
||||
export * from "./GenerateRegistrationTokensResponse";
|
||||
export * from "./LocationMetadataResponse";
|
||||
export * from "./TokenResponse";
|
||||
export * from "./WebhookCreateResponse";
|
||||
|
Loading…
x
Reference in New Issue
Block a user