mirror of
https://github.com/koreanbots/core.git
synced 2025-12-16 14:30:22 +00:00
feat: added RateLimit Handler
This commit is contained in:
parent
603b50e9e4
commit
64f7d82aae
23
utils/RateLimitHandler.ts
Normal file
23
utils/RateLimitHandler.ts
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import { NextApiResponse } from 'next'
|
||||||
|
import ResponseWrapper from './ResponseWrapper'
|
||||||
|
|
||||||
|
export default function RateLimitHandler(
|
||||||
|
res: NextApiResponse, ratelimit: RateLimit
|
||||||
|
) {
|
||||||
|
res.setHeader('x-ratelimit-limit', ratelimit.limit)
|
||||||
|
res.setHeader('x-ratelimit-remaining', 600 - (ratelimit.used > ratelimit.limit ? ratelimit.limit : ratelimit.used))
|
||||||
|
res.setHeader('x-ratelimit-reset', Math.round(ratelimit.reset / 1000))
|
||||||
|
if(ratelimit.limit < ratelimit.used) {
|
||||||
|
if(ratelimit.onLimitExceed) ratelimit.onLimitExceed(res)
|
||||||
|
else ResponseWrapper(res, { code: 429 })
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
interface RateLimit {
|
||||||
|
used: number
|
||||||
|
limit: number
|
||||||
|
reset: number,
|
||||||
|
onLimitExceed: (res: NextApiResponse)=> void | Promise<void>
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user