예제 #1
0
        public void PostSwingDataAsDistance([FromBody] SwingData swingSpeed)
        {
            int swingDistance = DistanceMeasurer.CalculateDistance(swingSpeed);

            if (swingDistance != 0)
            {
                FinalSwingDistance = swingDistance;
            }
        }
예제 #2
0
        public void NegativeSwingDataTest()
        {
            //Arrange
            RestRNGolfService.Controllers.SwingDataController swingDataController = new SwingDataController();
            SwingData negativeSwingData = new SwingData(-8.0);

            //Act
            try
            {
                swingDataController.PostSwingDataAsDistance(negativeSwingData);
                //Assert
                Assert.Fail();
            }
            catch (Exception e)
            {
            }
        }
예제 #3
0
        public void CalculateDistanceReturnsCorrectValueTest()
        {
            //Arrange
            RestRNGolfService.Controllers.SwingDataController swingDataController = new SwingDataController();
            int swingData;


            SwingData testSwingData    = new SwingData(10.01);
            int       expectedDistance = 30;

            //Act
            swingDataController.PostSwingDataAsDistance(testSwingData);
            swingData = SwingDataController.FinalSwingDistance;

            //Assert
            Assert.AreEqual(expectedDistance, swingData);
        }
예제 #4
0
        public void SwingDataPostToVariable()
        {
            //Arrange
            RestRNGolfService.Controllers.SwingDataController swingDataController = new SwingDataController();
            int swingData;


            SwingData testSwingData           = new SwingData(7.8);
            int       expectedValueOfVariable = 23;

            //Act
            swingDataController.PostSwingDataAsDistance(testSwingData);
            swingData = SwingDataController.FinalSwingDistance;

            //Assert
            Assert.AreEqual(expectedValueOfVariable, swingData);
        }
예제 #5
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            [Table("SwingData")] CloudTable dataTable,
            [Table("SwingLogger")] CloudTable loggerTable,
            ILogger log)
        {
            SwingData request = null;

            if (req.Headers.TryGetValue("Content-Encoding", out var value))
            {
                if (value.Any(c => c == "gzip"))
                {
                    using (var decompressionStream = new GZipStream(req.Body, CompressionMode.Decompress))
                    {
                        using (var reader = new StreamReader(decompressionStream))
                        {
                            request = JsonConvert.DeserializeObject <SwingData>(reader.ReadToEnd());
                        }
                    }
                }
            }
            if (request == null)
            {
                try
                {
                    using (var reader = new StreamReader(req.Body))
                    {
                        request = JsonConvert.DeserializeObject <SwingData>(reader.ReadToEnd());
                    }
                }
                catch { }
            }

            if (request == null)
            {
                return(new BadRequestResult());
            }

            var data = new SwingDataEntity
            {
                PartitionKey = request.User,
                RowKey       = $"{DateTimeOffset.MaxValue.Ticks - request.Time.Ticks:d19}_{Guid.NewGuid()}",
                User         = request.User,
                Time         = request.Time,
                TimeOffset   = request.Time.Offset.ToString(),
                Dump         = request.Dump,
                Club         = (int)request.Club,
                HeadSpeed    = request.HeadSpeed,
                BallSpeed    = request.BallSpeed,
                Distance     = request.Distance,
                Meet         = request.Meet,
                Tag          = request.Tag
            };

            await dataTable.ExecuteAsync(TableOperation.InsertOrMerge(data));


            var tableQuery = new TableQuery <SwingLoggerEntity>();

            tableQuery.FilterString = TableQuery.CombineFilters(
                TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "0"),
                TableOperators.And,
                TableQuery.GenerateFilterCondition("DeviceId", QueryComparisons.Equal, request.User));
            var logger = (await loggerTable.ExecuteQuerySegmentedAsync(tableQuery, null)).FirstOrDefault();

            if (logger != null)
            {
                logger.IncomingData = true;
                await loggerTable.ExecuteAsync(TableOperation.Merge(logger));
            }

            return(new OkResult());
        }
 public _Swing(SwingData data)
 {
     _Data                = data;
     MoveOffset           = Vector2.zero;
     _NormalizedDirection = _Data.SwingDirection.normalized;
 }