summaryrefslogtreecommitdiff
path: root/src/StardewModdingAPI.Web/Controllers
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <github@jplamondonw.com>2017-09-25 17:39:51 -0400
committerJesse Plamondon-Willard <github@jplamondonw.com>2017-09-25 17:39:51 -0400
commit6dff9779a349945d502dee67d5d4dd8e63b4f753 (patch)
tree7621f85a392329cb0a782355feff252b6d34e2d6 /src/StardewModdingAPI.Web/Controllers
parentb105c97dda01441d503d31e8b8ac0b3fd35fef14 (diff)
downloadSMAPI-6dff9779a349945d502dee67d5d4dd8e63b4f753.tar.gz
SMAPI-6dff9779a349945d502dee67d5d4dd8e63b4f753.tar.bz2
SMAPI-6dff9779a349945d502dee67d5d4dd8e63b4f753.zip
use POST for SMAPI update checks to avoid issues with long queries (#336)
Diffstat (limited to 'src/StardewModdingAPI.Web/Controllers')
-rw-r--r--src/StardewModdingAPI.Web/Controllers/ModsController.cs17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/StardewModdingAPI.Web/Controllers/ModsController.cs b/src/StardewModdingAPI.Web/Controllers/ModsController.cs
index 566577e4..f29de45a 100644
--- a/src/StardewModdingAPI.Web/Controllers/ModsController.cs
+++ b/src/StardewModdingAPI.Web/Controllers/ModsController.cs
@@ -14,6 +14,7 @@ namespace StardewModdingAPI.Web.Controllers
{
/// <summary>Provides an API to perform mod update checks.</summary>
[Produces("application/json")]
+ [Route("api/{version:semanticVersion}/[controller]")]
internal class ModsController : Controller
{
/*********
@@ -80,15 +81,27 @@ namespace StardewModdingAPI.Web.Controllers
[HttpGet]
public async Task<IDictionary<string, ModInfoModel>> GetAsync(string modKeys)
{
+ string[] modKeysArray = modKeys?.Split(',').Select(p => p.Trim()).ToArray();
+ if (modKeysArray == null || !modKeysArray.Any())
+ return new Dictionary<string, ModInfoModel>();
+
+ return await this.PostAsync(new ModSearchModel(modKeysArray));
+ }
+
+ /// <summary>Fetch version metadata for the given mods.</summary>
+ /// <param name="search">The mod search criteria.</param>
+ [HttpPost]
+ public async Task<IDictionary<string, ModInfoModel>> PostAsync([FromBody] ModSearchModel search)
+ {
// sort & filter keys
- string[] modKeysArray = (modKeys?.Split(',').Select(p => p.Trim()).ToArray() ?? new string[0])
+ string[] modKeys = (search?.ModKeys?.ToArray() ?? new string[0])
.Distinct(StringComparer.CurrentCultureIgnoreCase)
.OrderBy(p => p, StringComparer.CurrentCultureIgnoreCase)
.ToArray();
// fetch mod info
IDictionary<string, ModInfoModel> result = new Dictionary<string, ModInfoModel>(StringComparer.CurrentCultureIgnoreCase);
- foreach (string modKey in modKeysArray)
+ foreach (string modKey in modKeys)
{
// parse mod key
if (!this.TryParseModKey(modKey, out string vendorKey, out string modID))