コード例 #1
0
        private void ValidateHeartRateTimeSeriesData(HeartActivitiesTimeSeries activities)
        {
            var act = activities.HeartActivities;

            act.Count().Should().Be(7);

            var firstAct = act[0];

            firstAct.DateTime.Should().Be(new DateTime(2017, 08, 15));

            firstAct.CustomHeartRateZones.Count().Should().Be(0);          //Empty Custom Heart Rate Zones

            firstAct.HeartRateZones.Count().Should().Be(4);                //Heart Rate Zones Count

            firstAct.HeartRateZones[0].CaloriesOut.Should().Be(2257.6846); //First zone
            firstAct.HeartRateZones[0].Max.Should().Be(92);
            firstAct.HeartRateZones[0].Min.Should().Be(30);
            firstAct.HeartRateZones[0].Minutes.Should().Be(1264);
            firstAct.HeartRateZones[0].Name.Should().Be("Out of Range");

            firstAct.HeartRateZones[3].CaloriesOut.Should().Be(287.33136); //Last zone
            firstAct.HeartRateZones[3].Max.Should().Be(220);
            firstAct.HeartRateZones[3].Min.Should().Be(156);
            firstAct.HeartRateZones[3].Minutes.Should().Be(21);
            firstAct.HeartRateZones[3].Name.Should().Be("Peak");

            firstAct.RestingHeartRate.Should().Be(51);
        }
コード例 #2
0
        public void Can_Deserialize_HeartRateTimeSeries()
        {
            //assemble
            string content = SampleDataHelper.GetContent("GetHeartRateTimeSeries.json");
            JsonDotNetSerializer seralizer = new JsonDotNetSerializer();

            //act
            HeartActivitiesTimeSeries stats = seralizer.GetHeartActivitiesTimeSeries(content);

            //assert
            ValidateHeartRateTimeSeriesData(stats);
        }
コード例 #3
0
        public async Task GetHeartRateTimeSeriesAsync_Success()
        {
            string content = SampleDataHelper.GetContent("GetHeartRateTimeSeries.json");

            Func <HttpResponseMessage> responseMessage = new Func <HttpResponseMessage>(() => new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent(content)
            });

            Action <HttpRequestMessage, CancellationToken> verification = new Action <HttpRequestMessage, CancellationToken>((message, token) =>
            {
                string uri = $"https:/" + $"/api.fitbit.com/1.1/user/-/activities/heart/date/{DateTime.Today:yyyy-MM-dd}/1d.json";
                Assert.AreEqual(HttpMethod.Get, message.Method);
                Assert.AreEqual(uri, message.RequestUri.AbsoluteUri);
            });

            FitbitClient fitbitClient = Helper.CreateFitbitClient(responseMessage, verification);

            HeartActivitiesTimeSeries response = await fitbitClient.GetHeartRateTimeSeries(DateTime.Today, DateRangePeriod.OneDay);

            ValidateHeartRateTimeSeriesData(response);
        }
コード例 #4
0
        internal static HeartActivitiesTimeSeries GetHeartActivitiesTimeSeries(this JsonDotNetSerializer serializer, string heartActivitiesTimeSeries)
        {
            if (string.IsNullOrWhiteSpace(heartActivitiesTimeSeries))
            {
                throw new ArgumentNullException("heartActivitiesTimeSeries", "heartActivitiesTimeSeries can not be empty, null or whitespace.");
            }

            var activitiesHeartIntraday = JToken.Parse(heartActivitiesTimeSeries)["activities-heart"];
            //var dataset = activitiesHeartIntraday["dataset"];

            var result = new HeartActivitiesTimeSeries()
            {
                HeartActivities = (from item in activitiesHeartIntraday
                                   select new HeartActivities
                {
                    DateTime = DateTime.Parse(item["dateTime"].ToString()),                    //here, maybe pass in the date so we have a full object of date and time
                    HeartRateZones = serializer.Deserialize <List <HeartRateZone> >(item["value"]["heartRateZones"]),
                    CustomHeartRateZones = serializer.Deserialize <List <HeartRateZone> >(item["value"]["customHeartRateZones"])
                }).ToList(),
            };

            return(result);
        }