mirror of
https://github.com/spacebarchat/server.git
synced 2024-11-22 18:32:29 +01:00
Create webhooks
This commit is contained in:
parent
b67ded04ef
commit
3c7efd6503
@ -40,7 +40,7 @@ router.post(
|
|||||||
|
|
||||||
const invite = await Invite.create({
|
const invite = await Invite.create({
|
||||||
code: random(),
|
code: random(),
|
||||||
temporary: req.body.temporary,
|
temporary: req.body.temporary || true,
|
||||||
uses: 0,
|
uses: 0,
|
||||||
max_uses: req.body.max_uses,
|
max_uses: req.body.max_uses,
|
||||||
max_age: req.body.max_age,
|
max_age: req.body.max_age,
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
import { Router, Response, Request } from "express";
|
import { Router, Response, Request } from "express";
|
||||||
import { route } from "@fosscord/api";
|
import { route } from "@fosscord/api";
|
||||||
import { Channel, Config, trimSpecial, Webhook } from "@fosscord/util";
|
import { Channel, Config, handleFile, trimSpecial, User, Webhook, WebhookCreateSchema, WebhookType } from "@fosscord/util";
|
||||||
import { HTTPError } from "lambert-server";
|
import { HTTPError } from "lambert-server";
|
||||||
import { isTextChannel } from "./messages/index";
|
import { isTextChannel } from "./messages/index";
|
||||||
import { DiscordApiErrors } from "@fosscord/util";
|
import { DiscordApiErrors } from "@fosscord/util";
|
||||||
|
import crypto from "crypto";
|
||||||
|
|
||||||
const router: Router = Router();
|
const router: Router = Router();
|
||||||
|
|
||||||
@ -30,11 +31,32 @@ router.post(
|
|||||||
if (webhook_count > maxWebhooks)
|
if (webhook_count > maxWebhooks)
|
||||||
throw DiscordApiErrors.MAXIMUM_WEBHOOKS.withParams(maxWebhooks);
|
throw DiscordApiErrors.MAXIMUM_WEBHOOKS.withParams(maxWebhooks);
|
||||||
|
|
||||||
var { avatar, name } = req.body as { name: string; avatar?: string };
|
var { avatar, name } = req.body as WebhookCreateSchema;
|
||||||
name = trimSpecial(name);
|
name = trimSpecial(name);
|
||||||
if (name === "clyde") throw new HTTPError("Invalid name", 400);
|
|
||||||
|
|
||||||
// TODO: save webhook in database and send response
|
// TODO: move this
|
||||||
|
if (name === "clyde") throw new HTTPError("Invalid name", 400);
|
||||||
|
if (name === "Fosscord Ghost") throw new HTTPError("Invalid name", 400);
|
||||||
|
|
||||||
|
if (avatar)
|
||||||
|
avatar = await handleFile(`/avatars/${channel_id}`, avatar);
|
||||||
|
|
||||||
|
const hook = Webhook.create({
|
||||||
|
type: WebhookType.Incoming,
|
||||||
|
name,
|
||||||
|
avatar,
|
||||||
|
guild_id: channel.guild_id,
|
||||||
|
channel_id: channel.id,
|
||||||
|
user_id: req.user_id,
|
||||||
|
token: crypto.randomBytes(24).toString("base64"),
|
||||||
|
});
|
||||||
|
|
||||||
|
const user = await User.getPublicUser(req.user_id);
|
||||||
|
|
||||||
|
return res.json({
|
||||||
|
...hook,
|
||||||
|
user: user,
|
||||||
|
});
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -169,6 +169,12 @@ export class Channel extends BaseClass {
|
|||||||
})
|
})
|
||||||
webhooks?: Webhook[];
|
webhooks?: Webhook[];
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
flags: number = 0;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
default_thread_rate_limit_per_user: number = 0;
|
||||||
|
|
||||||
// TODO: DM channel
|
// TODO: DM channel
|
||||||
static async createChannel(
|
static async createChannel(
|
||||||
channel: Partial<Channel>,
|
channel: Partial<Channel>,
|
||||||
|
@ -8,6 +8,7 @@ import { User } from "./User";
|
|||||||
export enum WebhookType {
|
export enum WebhookType {
|
||||||
Incoming = 1,
|
Incoming = 1,
|
||||||
ChannelFollower = 2,
|
ChannelFollower = 2,
|
||||||
|
Application = 3,
|
||||||
}
|
}
|
||||||
|
|
||||||
@Entity("webhooks")
|
@Entity("webhooks")
|
||||||
|
@ -4,5 +4,5 @@ export interface WebhookCreateSchema {
|
|||||||
* @maxLength 80
|
* @maxLength 80
|
||||||
*/
|
*/
|
||||||
name: string;
|
name: string;
|
||||||
avatar: string;
|
avatar?: string;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user