summaryrefslogtreecommitdiff
path: root/Dewdrop/Controllers/CheckController.cs
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <github@jplamondonw.com>2017-09-21 23:06:01 -0400
committerJesse Plamondon-Willard <github@jplamondonw.com>2017-09-21 23:34:52 -0400
commit57d9d28554de79734401a68ee1151fc4e9e0ca83 (patch)
treefb7883d03cdf6f479e647e39a09a61bade11a610 /Dewdrop/Controllers/CheckController.cs
parentf0e2117f70455bd9883321ae5b0bf40562f2d5de (diff)
parent06ed54b2c6c2e1f49d6975a34ea36f685d7f7c49 (diff)
downloadSMAPI-57d9d28554de79734401a68ee1151fc4e9e0ca83.tar.gz
SMAPI-57d9d28554de79734401a68ee1151fc4e9e0ca83.tar.bz2
SMAPI-57d9d28554de79734401a68ee1151fc4e9e0ca83.zip
Merge remote-tracking branch 'dewdrop/master' into feature/update-check-api (#336)
# Conflicts: # .gitignore
Diffstat (limited to 'Dewdrop/Controllers/CheckController.cs')
-rw-r--r--Dewdrop/Controllers/CheckController.cs60
1 files changed, 60 insertions, 0 deletions
diff --git a/Dewdrop/Controllers/CheckController.cs b/Dewdrop/Controllers/CheckController.cs
new file mode 100644
index 00000000..f3cdd364
--- /dev/null
+++ b/Dewdrop/Controllers/CheckController.cs
@@ -0,0 +1,60 @@
+using System;
+using System.Net.Http;
+using Microsoft.AspNetCore.Mvc;
+using System.Threading.Tasks;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+using Dewdrop.Models;
+
+namespace Dewdrop.Controllers
+{
+ [Produces("application/json")]
+ [Route("api/check")]
+ public class CheckController : Controller
+ {
+ [HttpPost]
+ public async Task<string> Post([FromBody] NexusResponseModel[] mods)
+ {
+ using (var client = new HttpClient())
+ {
+ // the return array of mods
+ var modList = new List<ModGenericModel>();
+
+ foreach (var mod in mods)
+ {
+ try
+ {
+ // create request with HttpRequestMessage
+ var request = new HttpRequestMessage(HttpMethod.Get, new Uri($"http://www.nexusmods.com/stardewvalley/mods/{mod.Id}"));
+
+ // add the Nexus Client useragent to get JSON response from the site
+ request.Headers.UserAgent.ParseAdd("Nexus Client v0.63.15");
+
+ // send the request out
+ var response = await client.SendAsync(request);
+ // ensure the response is valid (throws exception)
+ response.EnsureSuccessStatusCode();
+
+ // get the JSON string of the response
+ var stringResponse = await response.Content.ReadAsStringAsync();
+
+ // create the mod data from the JSON string
+ var modData = JsonConvert.DeserializeObject<NexusResponseModel>(stringResponse);
+
+ // add to the list of mods
+ modList.Add(modData.ModInfo());
+ }
+ catch (Exception ex)
+ {
+ var modData = mod.ModInfo();
+ modData.Valid = false;
+
+ modList.Add(modData);
+ }
+ }
+
+ return JsonConvert.SerializeObject(modList, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
+ }
+ }
+ }
+} \ No newline at end of file