summaryrefslogtreecommitdiff
path: root/src/SMAPI.Web/Controllers
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <github@jplamondonw.com>2017-12-24 23:28:07 -0500
committerJesse Plamondon-Willard <github@jplamondonw.com>2017-12-24 23:28:07 -0500
commit05541c11a72735d79d98cf3ae14d592e70bd8f54 (patch)
tree79ca6a23fb00a47d6387e7f77c28c7aa80543f97 /src/SMAPI.Web/Controllers
parentc3d0ce7245b76d26ea22ceb5430ee526d43170f7 (diff)
downloadSMAPI-05541c11a72735d79d98cf3ae14d592e70bd8f54.tar.gz
SMAPI-05541c11a72735d79d98cf3ae14d592e70bd8f54.tar.bz2
SMAPI-05541c11a72735d79d98cf3ae14d592e70bd8f54.zip
decouple API clients from mods API (#411)
Diffstat (limited to 'src/SMAPI.Web/Controllers')
-rw-r--r--src/SMAPI.Web/Controllers/ModsApiController.cs34
1 files changed, 10 insertions, 24 deletions
diff --git a/src/SMAPI.Web/Controllers/ModsApiController.cs b/src/SMAPI.Web/Controllers/ModsApiController.cs
index a600662c..dcb4ec52 100644
--- a/src/SMAPI.Web/Controllers/ModsApiController.cs
+++ b/src/SMAPI.Web/Controllers/ModsApiController.cs
@@ -7,6 +7,9 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Options;
using StardewModdingAPI.Common.Models;
+using StardewModdingAPI.Web.Framework.Clients.Chucklefish;
+using StardewModdingAPI.Web.Framework.Clients.GitHub;
+using StardewModdingAPI.Web.Framework.Clients.Nexus;
using StardewModdingAPI.Web.Framework.ConfigModels;
using StardewModdingAPI.Web.Framework.ModRepositories;
@@ -39,39 +42,22 @@ namespace StardewModdingAPI.Web.Controllers
/// <summary>Construct an instance.</summary>
/// <param name="cache">The cache in which to store mod metadata.</param>
/// <param name="configProvider">The config settings for mod update checks.</param>
- public ModsApiController(IMemoryCache cache, IOptions<ModUpdateCheckConfig> configProvider)
+ /// <param name="chucklefish">The Chucklefish API client.</param>
+ /// <param name="github">The GitHub API client.</param>
+ /// <param name="nexus">The Nexus API client.</param>
+ public ModsApiController(IMemoryCache cache, IOptions<ModUpdateCheckConfig> configProvider, IChucklefishClient chucklefish, IGitHubClient github, INexusClient nexus)
{
ModUpdateCheckConfig config = configProvider.Value;
this.Cache = cache;
this.CacheMinutes = config.CacheMinutes;
this.VersionRegex = config.SemanticVersionRegex;
-
- string version = this.GetType().Assembly.GetName().Version.ToString(3);
this.Repositories =
new IModRepository[]
{
- new ChucklefishRepository(
- vendorKey: config.ChucklefishKey,
- userAgent: string.Format(config.ChucklefishUserAgent, version),
- baseUrl: config.ChucklefishBaseUrl,
- modPageUrlFormat: config.ChucklefishModPageUrlFormat
- ),
- new GitHubRepository(
- vendorKey: config.GitHubKey,
- baseUrl: config.GitHubBaseUrl,
- releaseUrlFormat: config.GitHubReleaseUrlFormat,
- userAgent: string.Format(config.GitHubUserAgent, version),
- acceptHeader: config.GitHubAcceptHeader,
- username: config.GitHubUsername,
- password: config.GitHubPassword
- ),
- new NexusRepository(
- vendorKey: config.NexusKey,
- userAgent: config.NexusUserAgent,
- baseUrl: config.NexusBaseUrl,
- modUrlFormat: config.NexusModUrlFormat
- )
+ new ChucklefishRepository(config.ChucklefishKey, chucklefish),
+ new GitHubRepository(config.GitHubKey, github),
+ new NexusRepository(config.NexusKey, nexus)
}
.ToDictionary(p => p.VendorKey, StringComparer.CurrentCultureIgnoreCase);
}