summaryrefslogtreecommitdiff
path: root/src/SMAPI.Web/Controllers/ModsController.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/SMAPI.Web/Controllers/ModsController.cs')
-rw-r--r--src/SMAPI.Web/Controllers/ModsController.cs33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/SMAPI.Web/Controllers/ModsController.cs b/src/SMAPI.Web/Controllers/ModsController.cs
new file mode 100644
index 00000000..99d19f76
--- /dev/null
+++ b/src/SMAPI.Web/Controllers/ModsController.cs
@@ -0,0 +1,33 @@
+using System.Linq;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using StardewModdingAPI.Toolkit;
+using StardewModdingAPI.Toolkit.Framework.Clients.Wiki;
+using StardewModdingAPI.Web.ViewModels;
+
+namespace StardewModdingAPI.Web.Controllers
+{
+ /// <summary>Provides user-friendly info about SMAPI mods.</summary>
+ internal class ModsController : Controller
+ {
+ /*********
+ ** Public methods
+ *********/
+ /// <summary>Display information for all mods.</summary>
+ [HttpGet]
+ [Route("mods")]
+ public async Task<ViewResult> Index()
+ {
+ WikiModEntry[] mods = await new ModToolkit().GetWikiCompatibilityListAsync();
+ ModListModel viewModel = new ModListModel(
+ stableVersion: "1.3.28",
+ betaVersion: "1.3.31-beta",
+ mods: mods
+ .Select(mod => new ModModel(mod))
+ .OrderBy(p => Regex.Replace(p.Name.ToLower(), "[^a-z0-9]", "")) // ignore case, spaces, and special characters when sorting
+ );
+ return this.View("Index", viewModel);
+ }
+ }
+}