File: TestRateLimiter.cs
Web Access
Project: src\src\Middleware\RateLimiting\test\Microsoft.AspNetCore.RateLimiting.Tests.csproj (Microsoft.AspNetCore.RateLimiting.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Threading.RateLimiting;
 
namespace Microsoft.AspNetCore.RateLimiting;
 
internal class TestRateLimiter : RateLimiter
{
    private readonly bool _alwaysAccept;
 
    public TestRateLimiter(bool alwaysAccept)
    {
        _alwaysAccept = alwaysAccept;
    }
 
    public override TimeSpan? IdleDuration => throw new NotImplementedException();
 
    public override RateLimiterStatistics GetStatistics()
    {
        throw new NotImplementedException();
    }
 
    protected override RateLimitLease AttemptAcquireCore(int permitCount)
    {
        return new TestRateLimitLease(_alwaysAccept, null);
    }
 
    protected override ValueTask<RateLimitLease> AcquireAsyncCore(int permitCount, CancellationToken cancellationToken)
    {
        cancellationToken.ThrowIfCancellationRequested();
        return new ValueTask<RateLimitLease>(new TestRateLimitLease(_alwaysAccept, null));
    }
}