Hi guys,
I did something like that for a service,
export default class LimiterService {
public async login(loginLimiter: LoginLimiterType) {
const {increment} = await this.applyLimiter({
blockDuration: "30 mins",
duration: "15 mins",
requests: 2,
request: loginLimiter.request,
response: loginLimiter.response,
throttleKey: loginLimiter.throttleKey
})
return {increment: () => increment()}
}
public async applyLimiter(genericLimiter: GenericLimiterType) {
const limiter = await Limiter.use({
requests: genericLimiter.requests,
duration: genericLimiter.duration,
blockDuration: genericLimiter.blockDuration,
})
if (await limiter.isBlocked(genericLimiter.throttleKey)) {
return genericLimiter.response.tooManyRequests('Too many requests, please be patient.')
}
return {
limiter,
increment: () => limiter.increment(genericLimiter.throttleKey)
}
}
}
And I don't really appreciate the return {increment: () => increment()} and typescript is yelling at me.