mirror of
https://github.com/multipleof4/lynchmark.git
synced 2026-01-14 00:27:55 +00:00
Feat: Add newsletter subscription endpoint
This commit is contained in:
15
functions/api/subscribe.js
Normal file
15
functions/api/subscribe.js
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
export async function onRequestPost(ctx) {
|
||||||
|
const { request, env } = ctx;
|
||||||
|
const { email } = await request.json().catch(() => ({}));
|
||||||
|
if (!email || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
|
||||||
|
return new Response(JSON.stringify({ error: 'Invalid email' }), { status: 400, headers: { 'Content-Type': 'application/json' } });
|
||||||
|
}
|
||||||
|
const cf = request.cf || {};
|
||||||
|
const geo = [cf.city, cf.region, cf.country].filter(Boolean).join(', ') || 'Unknown';
|
||||||
|
await fetch(`https://ntfy.sh/${env.NTFY_TOPIC}`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: { Priority: '3', Title: `New sub: ${geo}` },
|
||||||
|
body: email
|
||||||
|
});
|
||||||
|
return new Response(JSON.stringify({ ok: true }), { headers: { 'Content-Type': 'application/json' } });
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user