1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import { upstashRateLimiter } from "https://esm.town/v/zzz/upstashRateLimiter";
// https://api.val.town/v1/express/zzz.RateLimitDemo
export async function RateLimitDemo(req, res) {
const ip = req.get("true-client-ip") ??
req.get("x-forwarded-for")?.split(",")[0];
// const user = $zzz.whoami();
console.log(`Request IP: ${ip}`);
const proceed = await upstashRateLimiter(
ip,
"@zzz.RateLimitDemo",
2,
"60 s",
);
if (!proceed) {
res.status(429).send(`Too many requests. Try again later :)`);
return;
}
res.status(200).send(`${Date.now()}`);
}