Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Create send notification endpoint
  • Loading branch information
regalijan committed Oct 19, 2023
1 parent af8da9a commit ebc0b5e
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions functions/api/notifications/send.ts
@@ -0,0 +1,35 @@
import { jsonError } from "../../common.js";
import { sendPushNotification } from "../../gcloud.js";

export async function onRequestPost(context: RequestContext) {
const { current_user: currentUser } = context.data;

if (!currentUser) return jsonError("Unauthorized", 401);

if (!(currentUser.permissions & (1 << 0))) return jsonError("Forbidden", 403);

const { body, title } = context.data.body;

if (typeof body !== "string" || typeof title !== "string")
return jsonError("Body and title must be strings", 400);

if (
new Blob([
JSON.stringify({
message: {
notification: {
body,
title,
},
},
}),
]).size > 4000
)
return jsonError("Payload too large", 400);

await sendPushNotification(context.env, title, body);

return new Response(null, {
status: 204,
});
}

0 comments on commit ebc0b5e

Please sign in to comment.