Skip to content

Commit f679108

Browse files
authored
[feat]: Adds GraphQL rate limit property to the rate limit client
add in graphql rate limit
1 parent 4f826bc commit f679108

4 files changed

Lines changed: 45 additions & 7 deletions

File tree

Octokit.Tests.Integration/Clients/RateLimitClientTests.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ public class RateLimitClientTests
99
public async Task CanRetrieveResourceRateLimits()
1010
{
1111
var github = Helper.GetAuthenticatedClient();
12-
1312
var result = await github.RateLimit.GetRateLimits();
1413

1514
// Test the core limits
@@ -26,6 +25,13 @@ public async Task CanRetrieveResourceRateLimits()
2625
Assert.True(result.Resources.Search.ResetAsUtcEpochSeconds > 0);
2726
Assert.NotEqual(default, result.Resources.Search.Reset);
2827

28+
// Test the graphql limits
29+
Assert.True(result.Resources.Graphql.Limit > 0);
30+
Assert.True(result.Resources.Graphql.Remaining > -1);
31+
Assert.True(result.Resources.Graphql.Remaining <= result.Resources.Graphql.Limit);
32+
Assert.True(result.Resources.Graphql.ResetAsUtcEpochSeconds > 0);
33+
Assert.NotEqual(default, result.Resources.Graphql.Reset);
34+
2935
// Test the depreciated rate limits
3036
Assert.True(result.Rate.Limit > 0);
3137
Assert.True(result.Rate.Remaining > -1);

Octokit.Tests/Clients/MiscellaneousClientTests.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,15 +94,15 @@ public async Task RequestsTheResourceRateLimitEndpoint()
9494
var rateLimit = new MiscellaneousRateLimit(
9595
new ResourceRateLimit(
9696
new RateLimit(5000, 4999, 1372700873),
97-
new RateLimit(30, 18, 1372700873)
97+
new RateLimit(30, 18, 1372700873),
98+
new RateLimit(5000, 4999, 1372700873)
9899
),
99100
new RateLimit(100, 75, 1372700873)
100101
);
101102
var apiConnection = Substitute.For<IApiConnection>();
102103
apiConnection.Get<MiscellaneousRateLimit>(Arg.Is<Uri>(u => u.ToString() == "rate_limit")).Returns(Task.FromResult(rateLimit));
103104

104105
var client = new MiscellaneousClient(apiConnection);
105-
106106
var result = await client.GetRateLimits();
107107

108108
// Test the core limits
@@ -125,6 +125,16 @@ public async Task RequestsTheResourceRateLimitEndpoint()
125125
CultureInfo.InvariantCulture);
126126
Assert.Equal(expectedReset, result.Resources.Search.Reset);
127127

128+
// Test the graphql limits
129+
Assert.Equal(5000, result.Resources.Graphql.Limit);
130+
Assert.Equal(4999, result.Resources.Graphql.Remaining);
131+
Assert.Equal(1372700873, result.Resources.Graphql.ResetAsUtcEpochSeconds);
132+
expectedReset = DateTimeOffset.ParseExact(
133+
"Mon 01 Jul 2013 5:47:53 PM -00:00",
134+
"ddd dd MMM yyyy h:mm:ss tt zzz",
135+
CultureInfo.InvariantCulture);
136+
Assert.Equal(expectedReset, result.Resources.Graphql.Reset);
137+
128138
// Test the depreciated rate limits
129139
Assert.Equal(100, result.Rate.Limit);
130140
Assert.Equal(75, result.Rate.Remaining);

Octokit.Tests/Clients/RateLimitClientTests.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ public async Task RequestsTheResourceRateLimitEndpoint()
1616
var rateLimit = new MiscellaneousRateLimit(
1717
new ResourceRateLimit(
1818
new RateLimit(5000, 4999, 1372700873),
19-
new RateLimit(30, 18, 1372700873)
19+
new RateLimit(30, 18, 1372700873),
20+
new RateLimit(5000, 4999, 1372700873)
2021
),
2122
new RateLimit(100, 75, 1372700873)
2223
);
@@ -47,6 +48,16 @@ public async Task RequestsTheResourceRateLimitEndpoint()
4748
CultureInfo.InvariantCulture);
4849
Assert.Equal(expectedReset, result.Resources.Search.Reset);
4950

51+
// Test the graphql limits
52+
Assert.Equal(5000, result.Resources.Graphql.Limit);
53+
Assert.Equal(4999, result.Resources.Graphql.Remaining);
54+
Assert.Equal(1372700873, result.Resources.Graphql.ResetAsUtcEpochSeconds);
55+
expectedReset = DateTimeOffset.ParseExact(
56+
"Mon 01 Jul 2013 5:47:53 PM -00:00",
57+
"ddd dd MMM yyyy h:mm:ss tt zzz",
58+
CultureInfo.InvariantCulture);
59+
Assert.Equal(expectedReset, result.Resources.Graphql.Reset);
60+
5061
// Test the depreciated rate limits
5162
Assert.Equal(100, result.Rate.Limit);
5263
Assert.Equal(75, result.Rate.Remaining);

Octokit/Models/Response/ResourceRateLimit.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,20 @@ public class ResourceRateLimit
88
{
99
public ResourceRateLimit() { }
1010

11-
public ResourceRateLimit(RateLimit core, RateLimit search)
11+
public ResourceRateLimit(RateLimit core, RateLimit search, RateLimit graphQL)
1212
{
1313
Ensure.ArgumentNotNull(core, nameof(core));
1414
Ensure.ArgumentNotNull(search, nameof(search));
15+
Ensure.ArgumentNotNull(graphQL, nameof(graphQL));
1516

1617
Core = core;
1718
Search = search;
19+
Graphql = graphQL;
1820
}
1921

22+
2023
/// <summary>
21-
/// Rate limits for core API (rate limit for everything except Search API)
24+
/// Rate limits for core API
2225
/// </summary>
2326
public RateLimit Core { get; private set; }
2427

@@ -27,11 +30,19 @@ public ResourceRateLimit(RateLimit core, RateLimit search)
2730
/// </summary>
2831
public RateLimit Search { get; private set; }
2932

33+
/// <summary>
34+
/// Rate Limits for GraphQL API
35+
/// </summary>
36+
public RateLimit Graphql { get; private set; }
37+
38+
39+
3040
internal string DebuggerDisplay
3141
{
3242
get
3343
{
34-
return string.Format(CultureInfo.InvariantCulture, "Core: {0}; Search: {1} ", Core.DebuggerDisplay, Search.DebuggerDisplay);
44+
return string.Format(CultureInfo.InvariantCulture, "Core: {0}; Search: {1}; GraphQL: {2} ",
45+
Core.DebuggerDisplay, Search.DebuggerDisplay, Graphql.DebuggerDisplay);
3546
}
3647
}
3748
}

0 commit comments

Comments
 (0)