public async Task <HttpResponseMessage> PostBattleResultFileData() { // Verify that this is an HTML form file upload request if (!Request.Content.IsMimeMultipartContent("form-data")) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } // TODO: Use dependency injection to MapPath - http://stackoverflow.com/a/19563226 //string root = HttpContext.Current.Server.MapPath("~/App_Data"); string root = @"D:\Data\WoT\WoTKit\Queue"; var provider = new MultipartFormDataStreamProvider(root); try { // Read the form data await Request.Content.ReadAsMultipartAsync(provider); // Process the file(s) foreach (MultipartFileData file in provider.FileData) { System.Diagnostics.Trace.WriteLine(file.Headers.ContentDisposition.FileName); System.Diagnostics.Trace.WriteLine("Server file path: " + file.LocalFileName); var newFilePath = Path.Combine(Path.GetDirectoryName(file.LocalFileName), file.Headers.ContentDisposition.FileName); if (File.Exists(newFilePath)) { File.Delete(newFilePath); } File.Move(file.LocalFileName, newFilePath); var json = ConvertBattleResultToJSONService.Convert(newFilePath); var player = BattleResultsParser.ParsePlayer(json); var serverPlayer = PostPlayer(player); var battle = BattleResultsParser.ParseBattle(json); var serverBattle = PostBattle(battle); var playerBattle = BattleResultsParser.ParsePlayerBattle(json, serverPlayer, serverBattle); var serverPlayerBattle = PostPlayerBattle(playerBattle); File.Move(newFilePath, Path.Combine(@"D:\Data\WoT\WoTKit\Processed", Path.GetFileName(newFilePath))); } // Process any additional form data foreach (var key in provider.FormData.AllKeys) { foreach (var val in provider.FormData.GetValues(key)) { System.Diagnostics.Trace.WriteLine(string.Format("{0}: {1}", key, val)); } } return(Request.CreateResponse(HttpStatusCode.OK)); } catch (System.Exception e) { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e)); } }
public void Exercise_ParseBattle() { // Arrange var json = ResourceService.GetStringFromResources("LocalClientLibrary.Tests.BattleResult.json"); // Act var actual = BattleResultsParser.ParseBattle(json); // Assert Assert.Inconclusive("Lazy and I didn't bother to check the fields - needs to be done yet"); }
public void Exercise_ParsePlayer() { // Arrange var json = ResourceService.GetStringFromResources("LocalClientLibrary.Tests.BattleResult.json"); // Act var actual = BattleResultsParser.ParsePlayer(json); // Assert Assert.AreEqual("RJ_", actual.Name); Assert.AreEqual(1001268969, actual.AccountDBID); Assert.AreEqual(0, actual.PlayerId); }
public void Exercise_ParsePlayerBattle() { // Arrange var json = ResourceService.GetStringFromResources("LocalClientLibrary.Tests.BattleResult.json"); // Act var actual = BattleResultsParser.ParsePlayerBattle(json, new Web.Domain.Models.Player() { PlayerId = -1 }, new Web.Domain.Models.Battle() { BattleId = -2 }); // Assert Assert.AreEqual(-1, actual.PlayerId); Assert.AreEqual(-2, actual.BattleId); }