Skip to content

Commit 2853a69

Browse files
committed
Added RateLimitMode.SmallBurst as middle ground option
RateLimitMode.Pace seems like it causes a lot of unneeded delays for most cases, but RateLimitMode.Burst option can cause a very long lockout to the user / program as well. I think having a nice middle ground of 5 requests every 10 seconds would be nice and it has no negative impact.
1 parent de648ab commit 2853a69

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

RedditSharp/WebAgent.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ public enum RateLimitMode
4242
/// </summary>
4343
Pace,
4444
/// <summary>
45+
/// Restricts requests to five per ten seconds
46+
/// </summary>
47+
SmallBurst,
48+
/// <summary>
4549
/// Restricts requests to thirty per minute
4650
/// </summary>
4751
Burst,
@@ -142,6 +146,17 @@ private static void EnforceRateLimit()
142146
Thread.Sleep(250);
143147
_lastRequest = DateTime.UtcNow;
144148
break;
149+
case RateLimitMode.SmallBurst:
150+
if (_requestsThisBurst == 0)//this is first request
151+
_burstStart = DateTime.UtcNow;
152+
if (_requestsThisBurst >= 5) //limit has been reached
153+
{
154+
while ((DateTime.UtcNow - _burstStart).TotalSeconds < 10)
155+
Thread.Sleep(100);
156+
_burstStart = DateTime.UtcNow;
157+
}
158+
_requestsThisBurst++;
159+
break;
145160
case RateLimitMode.Burst:
146161
if (_requestsThisBurst == 0)//this is first request
147162
_burstStart = DateTime.UtcNow;

0 commit comments

Comments
 (0)