From ed5544b3b1a54aae1e225ac49f31860e2ed81f4b Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Mon, 18 Feb 2019 21:09:12 +0300 Subject: [PATCH] Docs module: Added user agent property for github --- .../GitHub/Documents/GithubDocumentStore.cs | 19 +++++++++++-------- .../Projects/ProjectGithubExtensions.cs | 6 ++++++ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentStore.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentStore.cs index 44edfa7e10..c9d8b63dd9 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentStore.cs +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentStore.cs @@ -29,6 +29,7 @@ namespace Volo.Docs.GitHub.Documents var rawRootUrl = CalculateRawRootUrl(rootUrl); var rawDocumentUrl = rawRootUrl + documentName; var commitHistoryUrl = project.GetGitHubUrlForCommitHistory() + documentName; + var userAgent = project.GetGithubUserAgentOrNull(); var isNavigationDocument = documentName == project.NavigationDocumentName; var editLink = rootUrl.ReplaceFirst("/tree/", "/blob/") + documentName; var localDirectory = ""; @@ -49,9 +50,9 @@ namespace Volo.Docs.GitHub.Documents Format = project.Format, LocalDirectory = localDirectory, FileName = fileName, - Contributors = !isNavigationDocument ? await GetContributors(commitHistoryUrl, token): new List(), + Contributors = !isNavigationDocument ? await GetContributors(commitHistoryUrl, token, userAgent): new List(), Version = version, - Content = await DownloadWebContentAsStringAsync(rawDocumentUrl, token) + Content = await DownloadWebContentAsStringAsync(rawDocumentUrl, token, userAgent) }; } @@ -88,7 +89,8 @@ namespace Volo.Docs.GitHub.Documents var rawRootUrl = CalculateRawRootUrl(project.GetGitHubUrl(version)); var content = await DownloadWebContentAsByteArrayAsync( rawRootUrl + resourceName, - project.GetGitHubAccessTokenOrNull() + project.GetGitHubAccessTokenOrNull(), + project.GetGithubUserAgentOrNull() ); return new DocumentResource(content); @@ -142,7 +144,7 @@ namespace Volo.Docs.GitHub.Documents } } - private async Task DownloadWebContentAsStringAsync(string rawUrl, string token) + private async Task DownloadWebContentAsStringAsync(string rawUrl, string token, string userAgent) { try { @@ -152,7 +154,7 @@ namespace Volo.Docs.GitHub.Documents { webClient.Headers.Add("Authorization", "token " + token); } - webClient.Headers.Add("User-Agent", "request"); + webClient.Headers.Add("User-Agent", userAgent ?? ""); return await webClient.DownloadStringTaskAsync(new Uri(rawUrl)); } @@ -165,7 +167,7 @@ namespace Volo.Docs.GitHub.Documents } } - private async Task DownloadWebContentAsByteArrayAsync(string rawUrl, string token) + private async Task DownloadWebContentAsByteArrayAsync(string rawUrl, string token, string userAgent) { try { @@ -175,6 +177,7 @@ namespace Volo.Docs.GitHub.Documents { webClient.Headers.Add("Authorization", "token " + token); } + webClient.Headers.Add("User-Agent", userAgent ?? ""); return await webClient.DownloadDataTaskAsync(new Uri(rawUrl)); } @@ -187,13 +190,13 @@ namespace Volo.Docs.GitHub.Documents } } - private async Task> GetContributors(string url, string token) + private async Task> GetContributors(string url, string token, string userAgent) { var contributors = new List(); try { - var commitsJsonAsString = await DownloadWebContentAsStringAsync(url, token); + var commitsJsonAsString = await DownloadWebContentAsStringAsync(url, token, userAgent); var commits = JArray.Parse(commitsJsonAsString); diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Projects/ProjectGithubExtensions.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Projects/ProjectGithubExtensions.cs index 2e7f058391..3d2170a121 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Projects/ProjectGithubExtensions.cs +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Projects/ProjectGithubExtensions.cs @@ -41,6 +41,12 @@ namespace Volo.Docs.GitHub.Projects return project.ExtraProperties["GitHubAccessToken"] as string; } + public static string GetGithubUserAgentOrNull([NotNull] this Project project) + { + CheckGitHubProject(project); + return project.ExtraProperties["GitHubUserAgent"] as string; + } + public static void SetGitHubAccessToken([NotNull] this Project project, string value) { CheckGitHubProject(project);