From 4927f355c27526ab406f7b702882e3386e8e8526 Mon Sep 17 00:00:00 2001 From: Shannon Skinner Date: Mon, 12 Oct 2015 14:11:52 +1300 Subject: [PATCH] Extend GitHubUpdateManager to allow an accessToken to avoid GitHub API rate limiting. Fixes #463. --- src/Squirrel/UpdateManager.Factory.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Squirrel/UpdateManager.Factory.cs b/src/Squirrel/UpdateManager.Factory.cs index 07e9c930..0f26c612 100644 --- a/src/Squirrel/UpdateManager.Factory.cs +++ b/src/Squirrel/UpdateManager.Factory.cs @@ -34,7 +34,8 @@ namespace Squirrel string applicationName = null, string rootDirectory = null, IFileDownloader urlDownloader = null, - bool prerelease = false) + bool prerelease = false, + string accessToken = null) { var repoUri = new Uri(repoUrl); var userAgent = new ProductInfoHeaderValue("Squirrel", Assembly.GetExecutingAssembly().GetName().Version.ToString()); @@ -43,9 +44,16 @@ namespace Squirrel throw new Exception("Repo URL must be to the root URL of the repo e.g. https://github.com/myuser/myrepo"); } + var releasesApiBuilder = new StringBuilder("/repos") + .Append(repoUri.AbsolutePath) + .Append("/releases"); + + if (!string.IsNullOrWhiteSpace(accessToken)) + releasesApiBuilder.Append("?access_token=").Append(accessToken); + using (var client = new HttpClient() { BaseAddress = new Uri(gitHubUrl) }) { client.DefaultRequestHeaders.UserAgent.Add(userAgent); - var response = await client.GetAsync(String.Format("/repos{0}/releases", repoUri.PathAndQuery)); + var response = await client.GetAsync(releasesApiBuilder.ToString()); response.EnsureSuccessStatusCode(); var releases = SimpleJson.DeserializeObject>(await response.Content.ReadAsStringAsync());