package site.higgs.limiter.ratelimiter;

import org.springframework.core.annotation.AnnotationAttributes;
import site.higgs.limiter.AbstractLimiterAnnotationParser;
import site.higgs.limiter.resource.LimitedResource;

public class RateLimiterAnnotationParser extends AbstractLimiterAnnotationParser<RateLimiter, HRateLimiter> {
    @Override
    public LimitedResource<RateLimiter> parseLimiterAnnotation(AnnotationAttributes attributes) {
        return new RateLimiterResource(getKey(attributes),
                getArgumentInjectors(attributes),
                getFallback(attributes),
                getErrorHandler(attributes),
                getLimiter(attributes),
                (double) attributes.getNumber("rate"),
                (long) attributes.getNumber("capacity")
        );
    }
}