2026-01-04 21:11:09 -06:00
|
|
|
using System.Threading.RateLimiting;
|
|
|
|
|
|
|
|
|
|
namespace GroundsForSupport.Server.RateLimiting;
|
|
|
|
|
|
|
|
|
|
internal static class FixedRateLimitPolicy
|
|
|
|
|
{
|
|
|
|
|
public const string Name = "fixed";
|
|
|
|
|
|
|
|
|
|
public static Func<HttpContext, RateLimitPartition<string>> Partitioner =>
|
|
|
|
|
static context => RateLimitPartition.GetFixedWindowLimiter(
|
|
|
|
|
partitionKey: context.Connection.RemoteIpAddress?.ToString() ?? "unknown",
|
|
|
|
|
factory: static partition => new FixedWindowRateLimiterOptions
|
|
|
|
|
{
|
2026-01-04 21:32:30 -06:00
|
|
|
PermitLimit = 100,
|
2026-01-04 21:11:09 -06:00
|
|
|
Window = TimeSpan.FromHours(1),
|
|
|
|
|
QueueProcessingOrder = QueueProcessingOrder.OldestFirst,
|
|
|
|
|
QueueLimit = 0
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
}
|