using RateGateAsync; using Sony.Filtr.Contracts.Abstractions; using System; using System.Threading; using System.Threading.Tasks; namespace Sony.Filtr.DeezerAPI { public class DeezerRateLimiter : IRateLimiter { //Limit is 20 requests per 5 second according to https://developers.deezer.com/api but we leave some margins private static readonly RateGate _RateLimiter = new RateGate(15, TimeSpan.FromSeconds(5)); public async Task WaitToProceedAsync() { await _RateLimiter.WaitToProceedAsync(); } public async Task WaitToProceedAsync(TimeSpan timeSpan, CancellationToken cancellationToken) { await _RateLimiter.WaitToProceedAsync(timeSpan, cancellationToken); } } }