Consistent relations, url property, src channel

This commit is contained in:
TomatoCake
2024-07-18 15:35:10 +02:00
parent 873107f90d
commit adc3474216
7 changed files with 56 additions and 17 deletions
@@ -1,17 +1,17 @@
/*
Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
Copyright (C) 2023 Spacebar and Spacebar Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
@@ -53,13 +53,20 @@ router.get(
where: { channel_id },
relations: [
"user",
"channel",
"source_channel",
"guild",
"source_guild",
"application" /*"source_channel"*/,
"application",
],
});
return res.json(webhooks);
const instanceUrl =
Config.get().api.endpointPublic || "http://localhost:3001";
return res.json(webhooks.map(webhook => ({
...webhook,
url: instanceUrl + "/webhooks/" + webhook.id + "/" + webhook.token,
})));
},
);
+13 -6
View File
@@ -1,23 +1,23 @@
/*
Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
Copyright (C) 2023 Spacebar and Spacebar Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { route } from "@spacebar/api";
import { Webhook } from "@spacebar/util";
import { Config, Webhook } from "@spacebar/util";
import { Request, Response, Router } from "express";
const router = Router();
@@ -39,13 +39,20 @@ router.get(
where: { guild_id },
relations: [
"user",
"channel",
"source_channel",
"guild",
"source_guild",
"application" /*"source_channel"*/,
"application",
],
});
return res.json(webhooks);
const instanceUrl =
Config.get().api.endpointPublic || "http://localhost:3001";
return res.json(webhooks.map(webhook => ({
...webhook,
url: instanceUrl + "/webhooks/" + webhook.id + "/" + webhook.token,
})));
},
);
@@ -34,7 +34,14 @@ router.get(
where: {
id: webhook_id,
},
relations: ["channel", "guild", "application"],
relations: [
"user",
"channel",
"source_channel",
"guild",
"source_guild",
"application",
],
});
if (!webhook) {
@@ -65,6 +72,7 @@ const messageUpload = multer({
}); // max upload 50 mb
// https://discord.com/developers/docs/resources/webhook#execute-webhook
// TODO: GitHub/Slack compatible hooks
router.post(
"/",
messageUpload.any(),
+9 -2
View File
@@ -11,7 +11,7 @@ const router = Router();
router.get(
"/",
route({
description: "Returns a webhook object for the given id.",
description: "Returns a webhook object for the given id. Requires the MANAGE_WEBHOOKS permission or to be the owner of the webhook.",
responses: {
200: {
body: "APIWebhook",
@@ -23,7 +23,14 @@ router.get(
const { webhook_id } = req.params;
const webhook = await Webhook.findOneOrFail({
where: { id: webhook_id },
relations: ["channel", "guild", "application", "user"],
relations: [
"user",
"channel",
"source_channel",
"guild",
"source_guild",
"application",
],
});
if (webhook.guild_id) {