mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-20 20:29:06 +00:00
53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
import axios from "axios";
|
|
import { URLSearchParams } from "url";
|
|
import { getConfig } from "../../app/lib/edgeConfig";
|
|
|
|
export default async function handler(req, res) {
|
|
const domainName = req.headers.host;
|
|
const config = await getConfig(domainName);
|
|
const { requireLogin, privacy, browse, sendToZulip } = config.features;
|
|
|
|
if (req.method === "POST") {
|
|
const { stream, topic, message } = req.body;
|
|
|
|
if (!stream || !topic || !message) {
|
|
return res.status(400).json({ error: "Missing required parameters" });
|
|
}
|
|
|
|
if (!sendToZulip) {
|
|
return res.status(403).json({ error: "Zulip integration disabled" });
|
|
}
|
|
|
|
try {
|
|
// Construct URL-encoded data
|
|
const params = new URLSearchParams();
|
|
params.append("type", "stream");
|
|
params.append("to", stream);
|
|
params.append("topic", topic);
|
|
params.append("content", message);
|
|
|
|
// Send the request1
|
|
const zulipResponse = await axios.post(
|
|
`https://${process.env.ZULIP_REALM}/api/v1/messages`,
|
|
params,
|
|
{
|
|
auth: {
|
|
username: process.env.ZULIP_BOT_EMAIL || "?",
|
|
password: process.env.ZULIP_API_KEY || "?",
|
|
},
|
|
headers: {
|
|
"Content-Type": "application/x-www-form-urlencoded",
|
|
},
|
|
},
|
|
);
|
|
|
|
return res.status(200).json(zulipResponse.data);
|
|
} catch (error) {
|
|
return res.status(500).json({ failed: true, error: error });
|
|
}
|
|
} else {
|
|
res.setHeader("Allow", ["POST"]);
|
|
res.status(405).end(`Method ${req.method} Not Allowed`);
|
|
}
|
|
}
|