diff --git a/src/Tgstation.Server.Host/Controllers/AdministrationController.cs b/src/Tgstation.Server.Host/Controllers/AdministrationController.cs
index a401011001..f73a6edc84 100644
--- a/src/Tgstation.Server.Host/Controllers/AdministrationController.cs
+++ b/src/Tgstation.Server.Host/Controllers/AdministrationController.cs
@@ -31,9 +31,9 @@ namespace Tgstation.Server.Host.Controllers
const string RestartNotSupportedException = "This deployment of tgstation-server is lacking the Tgstation.Server.Host.Watchdog component. Restarts and version changes cannot be completed!";
///
- /// The for the
+ /// The for the
///
- readonly IGitHubClient gitHubClient;
+ readonly IGitHubClientFactory gitHubClientFactory;
///
/// The for the
@@ -55,6 +55,11 @@ namespace Tgstation.Server.Host.Controllers
///
readonly UpdatesConfiguration updatesConfiguration;
+ ///
+ /// The for the
+ ///
+ readonly GeneralConfiguration generalConfiguration;
+
///
/// Construct an
///
@@ -66,13 +71,15 @@ namespace Tgstation.Server.Host.Controllers
/// The value of
/// The for the
/// The containing value of
- public AdministrationController(IDatabaseContext databaseContext, IAuthenticationContextFactory authenticationContextFactory, IGitHubClient gitHubClient, IServerControl serverUpdater, IApplication application, IIOManager ioManager, ILogger logger, IOptions updatesConfigurationOptions) : base(databaseContext, authenticationContextFactory, logger, false)
+ /// The containing value of
+ public AdministrationController(IDatabaseContext databaseContext, IAuthenticationContextFactory authenticationContextFactory, IGitHubClientFactory gitHubClientFactory, IServerControl serverUpdater, IApplication application, IIOManager ioManager, ILogger logger, IOptions updatesConfigurationOptions, IOptions generalConfigurationOptions) : base(databaseContext, authenticationContextFactory, logger, false)
{
- this.gitHubClient = gitHubClient ?? throw new ArgumentNullException(nameof(gitHubClient));
+ this.gitHubClientFactory = gitHubClientFactory ?? throw new ArgumentNullException(nameof(gitHubClientFactory));
this.serverUpdater = serverUpdater ?? throw new ArgumentNullException(nameof(serverUpdater));
this.application = application ?? throw new ArgumentNullException(nameof(application));
this.ioManager = ioManager ?? throw new ArgumentNullException(nameof(ioManager));
updatesConfiguration = updatesConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(updatesConfigurationOptions));
+ generalConfiguration = generalConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(generalConfigurationOptions));
}
StatusCodeResult RateLimit(RateLimitExceededException exception)
@@ -83,6 +90,8 @@ namespace Tgstation.Server.Host.Controllers
return StatusCode(429);
}
+ IGitHubClient GetGitHubClient() => String.IsNullOrEmpty(generalConfiguration.GitHubAccessToken) ? gitHubClientFactory.CreateClient() : gitHubClientFactory.CreateClient(generalConfiguration.GitHubAccessToken);
+
///
[TgsAuthorize]
public override async Task Read(CancellationToken cancellationToken)
@@ -93,6 +102,7 @@ namespace Tgstation.Server.Host.Controllers
Uri repoUrl = null;
try
{
+ var gitHubClient = GetGitHubClient();
var repositoryTask = gitHubClient.Repository.Get(updatesConfiguration.GitHubRepositoryId);
var releases = (await gitHubClient.Repository.Release.GetAll(updatesConfiguration.GitHubRepositoryId).ConfigureAwait(false)).Where(x => x.TagName.StartsWith(updatesConfiguration.GitTagPrefix, StringComparison.InvariantCulture));
@@ -137,6 +147,7 @@ namespace Tgstation.Server.Host.Controllers
IEnumerable releases;
try
{
+ var gitHubClient = GetGitHubClient();
releases = (await gitHubClient.Repository.Release.GetAll(updatesConfiguration.GitHubRepositoryId).ConfigureAwait(false)).Where(x => x.TagName.StartsWith(updatesConfiguration.GitTagPrefix, StringComparison.InvariantCulture));
}
catch (RateLimitExceededException e)
diff --git a/src/Tgstation.Server.Host/Controllers/RepositoryController.cs b/src/Tgstation.Server.Host/Controllers/RepositoryController.cs
index 721e8b6bd7..50e95ce65d 100644
--- a/src/Tgstation.Server.Host/Controllers/RepositoryController.cs
+++ b/src/Tgstation.Server.Host/Controllers/RepositoryController.cs
@@ -2,6 +2,7 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -15,6 +16,7 @@ using Tgstation.Server.Api;
using Tgstation.Server.Api.Models;
using Tgstation.Server.Api.Rights;
using Tgstation.Server.Host.Components;
+using Tgstation.Server.Host.Configuration;
using Tgstation.Server.Host.Core;
using Tgstation.Server.Host.Models;
using Tgstation.Server.Host.Security;
@@ -42,6 +44,11 @@ namespace Tgstation.Server.Host.Controllers
///
readonly IJobManager jobManager;
+ ///
+ /// The for the
+ ///
+ readonly GeneralConfiguration generalConfiguration;
+
///
/// Construct a
///
@@ -51,11 +58,12 @@ namespace Tgstation.Server.Host.Controllers
/// The value of
/// The value of
/// The for the
- public RepositoryController(IDatabaseContext databaseContext, IAuthenticationContextFactory authenticationContextFactory, IInstanceManager instanceManager, IGitHubClientFactory gitHubClientFactory, IJobManager jobManager, ILogger logger) : base(databaseContext, authenticationContextFactory, logger, true)
+ public RepositoryController(IDatabaseContext databaseContext, IAuthenticationContextFactory authenticationContextFactory, IInstanceManager instanceManager, IGitHubClientFactory gitHubClientFactory, IJobManager jobManager, ILogger logger, IOptions generalConfigurationOptions) : base(databaseContext, authenticationContextFactory, logger, true)
{
this.instanceManager = instanceManager ?? throw new ArgumentNullException(nameof(instanceManager));
this.gitHubClientFactory = gitHubClientFactory ?? throw new ArgumentNullException(nameof(gitHubClientFactory));
this.jobManager = jobManager ?? throw new ArgumentNullException(nameof(jobManager));
+ generalConfiguration = generalConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(generalConfigurationOptions));
}
static async Task LoadRevisionInformation(Components.Repository.IRepository repository, IDatabaseContext databaseContext, Models.Instance instance, string lastOriginCommitSha, Action revInfoSink, CancellationToken cancellationToken)
@@ -474,7 +482,7 @@ namespace Tgstation.Server.Host.Controllers
foreach (var I in model.NewTestMerges.Where(x => String.IsNullOrWhiteSpace(x.PullRequestRevision)))
I.PullRequestRevision = null;
- var gitHubClient = currentModel.AccessToken != null ? gitHubClientFactory.CreateClient(currentModel.AccessToken) : gitHubClientFactory.CreateClient();
+ var gitHubClient = String.IsNullOrEmpty(generalConfiguration.GitHubAccessToken) ? (currentModel.AccessToken != null ? gitHubClientFactory.CreateClient(currentModel.AccessToken) : gitHubClientFactory.CreateClient()) : gitHubClientFactory.CreateClient(generalConfiguration.GitHubAccessToken);
var repoOwner = repo.GitHubOwner;
var repoName = repo.GitHubRepoName;