Package org.languagetool.server
Class RequestLimiter
java.lang.Object
org.languagetool.server.RequestLimiter
- Direct Known Subclasses:
ErrorRequestLimiter
Limit the maximum number of request per IP address for a given time range.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final int
private DatabaseLogger
(package private) static final int
(package private) final List
<RequestLimiter.RequestEvent> private final int
private final int
private final int
private final Long
-
Constructor Summary
ConstructorsConstructorDescriptionRequestLimiter
(int requestLimit, int requestLimitInBytes, int requestLimitPeriodInSeconds) RequestLimiter
(int requestLimit, int requestLimitInBytes, int requestLimitPeriodInSeconds, int ipFingerprintFactor) -
Method Summary
Modifier and TypeMethodDescription(package private) void
(package private) void
(package private) String
private Long
getClientId
(Map<String, String> parameters) private String
getReferer
(Map<String, List<String>> httpHeader) (package private) int
The maximum number of request pergetRequestLimitPeriodInSeconds()
.(package private) int
The maximum number of request bytes pergetRequestLimitPeriodInSeconds()
.(package private) int
The time period over which requests are considered, in seconds.private int
getRequestSize
(Map<String, String> params) private String
getUserAgent
(Map<String, List<String>> httpHeader)
-
Field Details
-
REQUEST_QUEUE_SIZE
static final int REQUEST_QUEUE_SIZE- See Also:
-
requestEvents
-
ipFingerprintFactor
private final int ipFingerprintFactor -
requestLimit
private final int requestLimit -
requestLimitInBytes
private final int requestLimitInBytes -
requestLimitPeriodInSeconds
private final int requestLimitPeriodInSeconds -
server
-
logger
-
-
Constructor Details
-
RequestLimiter
RequestLimiter(int requestLimit, int requestLimitInBytes, int requestLimitPeriodInSeconds, int ipFingerprintFactor) - Parameters:
requestLimit
- the maximum number of request per requestLimitPeriodInSecondsrequestLimitPeriodInSeconds
- the time period over which requests are considered, in secondsipFingerprintFactor
- allow limits x times larger per ip when fingerprints differ (i.e. assume there may be a maximum of x users behind the same ip)
-
RequestLimiter
RequestLimiter(int requestLimit, int requestLimitInBytes, int requestLimitPeriodInSeconds)
-
-
Method Details
-
getRequestLimit
int getRequestLimit()The maximum number of request pergetRequestLimitPeriodInSeconds()
. -
getRequestLimitInBytes
int getRequestLimitInBytes()The maximum number of request bytes pergetRequestLimitPeriodInSeconds()
.- Since:
- 4.0
-
getRequestLimitPeriodInSeconds
int getRequestLimitPeriodInSeconds()The time period over which requests are considered, in seconds. -
computeFingerprint
-
checkAccess
- Parameters:
ipAddress
- the client's IP address- Throws:
TooManyRequestsException
- if access is not allowed because the request limit is reached
-
getRequestSize
-
getClientId
-
getReferer
-
getUserAgent
-
checkLimit
-