public async void CaloriesByPeriod(DateTime start, DateTime end, Action <IEnumerable <double> > act)
        {
            start = TimeZoneInfo.ConvertTimeToUtc(start);
            end   = TimeZoneInfo.ConvertTimeToUtc(end);

            using (DataReadRequest caloriesRequest = new DataReadRequest.Builder()
                                                     .Aggregate(DataType.TypeCaloriesExpended, DataType.AggregateCaloriesExpended)
                                                     .BucketByTime(1, TimeUnit.Days)
                                                     .SetTimeRange(TimeUtility.DatetimeInMillis(start), TimeUtility.DatetimeInMillis(end), TimeUnit.Milliseconds)
                                                     .Build())
                using (DataReadResult caloriesResult = (DataReadResult)await ReadData(caloriesRequest))
                    act?.Invoke(GetFloatFromResult(caloriesResult).Select(x => Math.Round(x)));
        }
        public async void ActiveTimeByPeriod(DateTime start, DateTime end, Action <IEnumerable <TimeSpan> > act)
        {
            start = TimeZoneInfo.ConvertTimeToUtc(start);
            end   = TimeZoneInfo.ConvertTimeToUtc(end);

            using (DataReadRequest time = new DataReadRequest.Builder()
                                          .Aggregate(DataType.TypeActivitySegment, DataType.AggregateActivitySummary)
                                          .BucketByTime(1, TimeUnit.Days)
                                          .SetTimeRange(TimeUtility.DatetimeInMillis(start), TimeUtility.DatetimeInMillis(end), TimeUnit.Milliseconds)
                                          .Build())
                using (DataReadResult caloriesResult = (DataReadResult)await ReadData(time))
                    act?.Invoke(GetIntFromResult(caloriesResult, new string[] { "duration" }).Select(x => TimeSpan.FromMinutes(x)));
        }
 private DataReadRequest CreateRequest(DataType input, DataType output, DateTime start, DateTime end)
 => new DataReadRequest.Builder()
 .Aggregate(input, output)
 .BucketByTime(1, TimeUnit.Days)
 .SetTimeRange(TimeUtility.DatetimeInMillis(start), TimeUtility.DatetimeInMillis(end), TimeUnit.Milliseconds)
 .Build();