RateLimitingProperties.java
package com.wilzwert.myjobs.infrastructure.security.ratelimit;
import org.springframework.boot.context.properties.ConfigurationProperties;
import java.time.Duration;
import java.util.*;
/**
* @author Wilhelm Zwertvaegher
*/
@ConfigurationProperties(prefix = "rate-limiting")
public class RateLimitingProperties {
private List<RateLimitConfig> rules = new ArrayList<>();
public List<RateLimitConfig> getRules() {
return rules;
}
public void setRules(List<RateLimitConfig> rules) {
this.rules = rules;
}
public static class RateLimitConfig {
private String path;
private String scope; // "anonymous", "authenticated", or null
private int limit;
private Duration duration;
public RateLimitConfig(String path, String scope, int limit, Duration duration) {
this.path = path;
this.scope = scope;
this.limit = limit;
this.duration = duration;
}
// Getters and setters
public String getPath() { return path; }
public void setPath(String path) { this.path = path; }
public String getScope() { return scope; }
public void setScope(String scope) { this.scope = scope; }
public int getLimit() { return limit; }
public void setLimit(int limit) { this.limit = limit; }
public Duration getDuration() { return duration; }
public void setDuration(Duration duration) { this.duration = duration; }
}
}