public void TestMethod1()
        {
            var target = new ConvertBattleResultToJSONService();

            var actual = ConvertBattleResultToJSONService.Convert(@"D:\Data\WoT\Temp\78942037161538862.dat");

            Assert.IsNotNull(actual);
        }
Exemple #2
0
        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));
            }
        }