· 6 years ago · Oct 13, 2019, 11:44 AM
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Threading.Tasks;
6using Octokit;
7
8namespace ConsoleApp
9{
10 public class Program
11 {
12 static GitHubClient client;
13 //
14 public static async Task Main(string[] args)
15 {
16 // Testing Octokit.
17 client = new GitHubClient(new ProductHeaderValue("some-app-name"));
18
19 await GetRateLimits()
20 .ContinueWith((x) => Console.ReadKey())
21 .ContinueWith((x) => ObtainCommits())
22 .ContinueWith((x) => Console.ReadKey());
23 }
24
25 static async Task<int> ObtainCommits()
26 {
27 await Task.Delay(TimeSpan.FromSeconds(1));
28 Console.WriteLine("Yep !");
29 return 0;
30 }
31
32 static async Task GetRateLimits()
33 {
34 StringBuilder builder = new StringBuilder( "--- CURRENT LIMITS ---");
35
36 var miscellaneousRateLimit = await client.Miscellaneous.GetRateLimits();
37
38 // The "core" object provides your rate limit status except for the Search API.
39 var coreRateLimit = miscellaneousRateLimit.Resources.Core;
40 var howManyCoreRequestsCanIMakePerHour = coreRateLimit.Limit;
41 var howManyCoreRequestsDoIHaveLeft = coreRateLimit.Remaining;
42 var whenDoesTheCoreLimitReset = coreRateLimit.Reset; // UTC time
43
44 // the "search" object provides your rate limit status for the Search API.
45 var searchRateLimit = miscellaneousRateLimit.Resources.Search;
46 var howManySearchRequestsCanIMakePerMinute = searchRateLimit.Limit;
47 var howManySearchRequestsDoIHaveLeft = searchRateLimit.Remaining;
48 var whenDoesTheSearchLimitReset = searchRateLimit.Reset; // UTC time
49
50 builder.AppendLine("### Core rate limit")
51 .AppendLine($"Requests available per hour = {howManyCoreRequestsCanIMakePerHour}")
52 .AppendLine($"Requests remaining = {howManyCoreRequestsDoIHaveLeft}")
53 .AppendLine($"When it will reset = {whenDoesTheCoreLimitReset}")
54 .AppendLine()
55 .AppendLine("### Search rate limit")
56 .AppendLine($"Search requests available per minute = {howManySearchRequestsCanIMakePerMinute}")
57 .AppendLine($"Search requests left = {howManySearchRequestsDoIHaveLeft}")
58 .AppendLine($"When it will reset = {whenDoesTheSearchLimitReset}")
59 .AppendLine()
60 .AppendLine("Press a key to proceed...");
61
62 Console.WriteLine(builder.ToString());
63 }
64 }
65}