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