aboutsummaryrefslogtreecommitdiff
path: root/src/config/ratelimit.ts
blob: afd6e54d591cd13a9cab46b3664b07c8f833ae8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import { config } from "dotenv";
import { rateLimiter } from "hono-rate-limiter";
import { getConnInfo } from "@hono/node-server/conninfo";

config();

export const ratelimit = rateLimiter({
  windowMs: Number(process.env.ANIWATCH_API_WINDOW_MS) || 30 * 60 * 1000,
  limit: Number(process.env.ANIWATCH_API_MAX_REQS) || 6,
  standardHeaders: "draft-7",
  keyGenerator(c) {
    const { remote } = getConnInfo(c);
    const key =
      `${String(remote.addressType)}_` +
      `${String(remote.address)}:${String(remote.port)}`;

    return key;
  },
  handler: (c) =>
    c.json({ status: 429, message: "Too Many Requests 😵" }, { status: 429 }),
});