diff options
author | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-09-21 23:06:01 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-09-21 23:34:52 -0400 |
commit | 57d9d28554de79734401a68ee1151fc4e9e0ca83 (patch) | |
tree | fb7883d03cdf6f479e647e39a09a61bade11a610 /Dewdrop/Controllers/CheckController.cs | |
parent | f0e2117f70455bd9883321ae5b0bf40562f2d5de (diff) | |
parent | 06ed54b2c6c2e1f49d6975a34ea36f685d7f7c49 (diff) | |
download | SMAPI-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.cs | 60 |
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 |