[feat]: Adds GraphQL rate limit property to the rate limit client

add in graphql rate limit
This commit is contained in:
Dirty Gooback
2023-11-13 14:19:38 -08:00
committed by GitHub
parent 4f826bc65b
commit f679108db5
4 changed files with 45 additions and 7 deletions
@@ -9,7 +9,6 @@ namespace Octokit.Tests.Integration.Clients
public async Task CanRetrieveResourceRateLimits()
{
var github = Helper.GetAuthenticatedClient();
var result = await github.RateLimit.GetRateLimits();
// Test the core limits
@@ -26,6 +25,13 @@ namespace Octokit.Tests.Integration.Clients
Assert.True(result.Resources.Search.ResetAsUtcEpochSeconds > 0);
Assert.NotEqual(default, result.Resources.Search.Reset);
// Test the graphql limits
Assert.True(result.Resources.Graphql.Limit > 0);
Assert.True(result.Resources.Graphql.Remaining > -1);
Assert.True(result.Resources.Graphql.Remaining <= result.Resources.Graphql.Limit);
Assert.True(result.Resources.Graphql.ResetAsUtcEpochSeconds > 0);
Assert.NotEqual(default, result.Resources.Graphql.Reset);
// Test the depreciated rate limits
Assert.True(result.Rate.Limit > 0);
Assert.True(result.Rate.Remaining > -1);
@@ -94,7 +94,8 @@ namespace Octokit.Tests.Clients
var rateLimit = new MiscellaneousRateLimit(
new ResourceRateLimit(
new RateLimit(5000, 4999, 1372700873),
new RateLimit(30, 18, 1372700873)
new RateLimit(30, 18, 1372700873),
new RateLimit(5000, 4999, 1372700873)
),
new RateLimit(100, 75, 1372700873)
);
@@ -102,7 +103,6 @@ namespace Octokit.Tests.Clients
apiConnection.Get<MiscellaneousRateLimit>(Arg.Is<Uri>(u => u.ToString() == "rate_limit")).Returns(Task.FromResult(rateLimit));
var client = new MiscellaneousClient(apiConnection);
var result = await client.GetRateLimits();
// Test the core limits
@@ -125,6 +125,16 @@ namespace Octokit.Tests.Clients
CultureInfo.InvariantCulture);
Assert.Equal(expectedReset, result.Resources.Search.Reset);
// Test the graphql limits
Assert.Equal(5000, result.Resources.Graphql.Limit);
Assert.Equal(4999, result.Resources.Graphql.Remaining);
Assert.Equal(1372700873, result.Resources.Graphql.ResetAsUtcEpochSeconds);
expectedReset = DateTimeOffset.ParseExact(
"Mon 01 Jul 2013 5:47:53 PM -00:00",
"ddd dd MMM yyyy h:mm:ss tt zzz",
CultureInfo.InvariantCulture);
Assert.Equal(expectedReset, result.Resources.Graphql.Reset);
// Test the depreciated rate limits
Assert.Equal(100, result.Rate.Limit);
Assert.Equal(75, result.Rate.Remaining);
+12 -1
View File
@@ -16,7 +16,8 @@ namespace Octokit.Tests.Clients
var rateLimit = new MiscellaneousRateLimit(
new ResourceRateLimit(
new RateLimit(5000, 4999, 1372700873),
new RateLimit(30, 18, 1372700873)
new RateLimit(30, 18, 1372700873),
new RateLimit(5000, 4999, 1372700873)
),
new RateLimit(100, 75, 1372700873)
);
@@ -47,6 +48,16 @@ namespace Octokit.Tests.Clients
CultureInfo.InvariantCulture);
Assert.Equal(expectedReset, result.Resources.Search.Reset);
// Test the graphql limits
Assert.Equal(5000, result.Resources.Graphql.Limit);
Assert.Equal(4999, result.Resources.Graphql.Remaining);
Assert.Equal(1372700873, result.Resources.Graphql.ResetAsUtcEpochSeconds);
expectedReset = DateTimeOffset.ParseExact(
"Mon 01 Jul 2013 5:47:53 PM -00:00",
"ddd dd MMM yyyy h:mm:ss tt zzz",
CultureInfo.InvariantCulture);
Assert.Equal(expectedReset, result.Resources.Graphql.Reset);
// Test the depreciated rate limits
Assert.Equal(100, result.Rate.Limit);
Assert.Equal(75, result.Rate.Remaining);
+14 -3
View File
@@ -8,17 +8,20 @@ namespace Octokit
{
public ResourceRateLimit() { }
public ResourceRateLimit(RateLimit core, RateLimit search)
public ResourceRateLimit(RateLimit core, RateLimit search, RateLimit graphQL)
{
Ensure.ArgumentNotNull(core, nameof(core));
Ensure.ArgumentNotNull(search, nameof(search));
Ensure.ArgumentNotNull(graphQL, nameof(graphQL));
Core = core;
Search = search;
Graphql = graphQL;
}
/// <summary>
/// Rate limits for core API (rate limit for everything except Search API)
/// Rate limits for core API
/// </summary>
public RateLimit Core { get; private set; }
@@ -27,11 +30,19 @@ namespace Octokit
/// </summary>
public RateLimit Search { get; private set; }
/// <summary>
/// Rate Limits for GraphQL API
/// </summary>
public RateLimit Graphql { get; private set; }
internal string DebuggerDisplay
{
get
{
return string.Format(CultureInfo.InvariantCulture, "Core: {0}; Search: {1} ", Core.DebuggerDisplay, Search.DebuggerDisplay);
return string.Format(CultureInfo.InvariantCulture, "Core: {0}; Search: {1}; GraphQL: {2} ",
Core.DebuggerDisplay, Search.DebuggerDisplay, Graphql.DebuggerDisplay);
}
}
}