/// <summary> /// Converts the timeseries resource into the property to acces the data /// </summary> /// <param name="timeseriesResource"></param> /// <returns></returns> internal static string ToTimeSeriesProperty(this TimeSeriesResourceType timeseriesResource) { var timeSeriesResourceDisplay = timeseriesResource.GetStringValue(); if (timeSeriesResourceDisplay.StartsWith("/")) { timeSeriesResourceDisplay = timeSeriesResourceDisplay.TrimStart(new[] { '/' }); } return timeSeriesResourceDisplay.Replace("/", "-"); }
/// <summary> /// Get TimeSeries data for another user accessible with this user's credentials /// </summary> /// <param name="timeSeriesResourceType"></param> /// <param name="baseDate"></param> /// <param name="endDateOrPeriod"></param> /// <param name="encodedUserId"></param> /// <returns></returns> private async Task <FitbitResponse <TimeSeriesDataListInt> > GetTimeSeriesIntAsync(TimeSeriesResourceType timeSeriesResourceType, DateTime baseDate, string endDateOrPeriod, string encodedUserId) { var apiCall = FitbitClientHelperExtensions.ToFullUrl("/1/user/{0}{1}/date/{2}/{3}.json", encodedUserId, timeSeriesResourceType.GetStringValue(), baseDate.ToFitbitFormat(), endDateOrPeriod); HttpResponseMessage response = await HttpClient.GetAsync(apiCall); var fitbitResponse = await HandleResponse <TimeSeriesDataListInt>(response); if (fitbitResponse.Success) { string responseBody = await response.Content.ReadAsStringAsync(); var serializer = new JsonDotNetSerializer { RootProperty = timeSeriesResourceType.ToTimeSeriesProperty() }; fitbitResponse.Data = serializer.GetTimeSeriesDataListInt(responseBody); } return(fitbitResponse); }
public TimeSeriesDataListInt GetTimeSeriesInt(TimeSeriesResourceType timeSeriesResourceType, DateTime baseDate, string endDateOrPeriod, string userId) { string userSignifier = "-"; //used for current user if (!string.IsNullOrWhiteSpace(userId)) userSignifier = userId; string requestUrl = string.Format("/1/user/{0}{1}/date/{2}/{3}.xml", userSignifier, timeSeriesResourceType.GetStringValue(), baseDate.ToString("yyyy-MM-dd"), endDateOrPeriod); RestRequest request = new RestRequest(requestUrl); request.OnBeforeDeserialization = resp => { XDocument doc = XDocument.Parse(resp.Content); //IEnumerable<XElement> links = doc.Descendants("result"); var rootElement = doc.Descendants("result").FirstOrDefault().Descendants().FirstOrDefault(); if (rootElement != null && !string.IsNullOrWhiteSpace(rootElement.Name.LocalName)) request.RootElement = rootElement.Name.LocalName; //foreach (XElement link in links) //{ //RemoveDuplicateElement(link, "category"); //RemoveDuplicateElement(link, "click-commission"); //RemoveDuplicateElement(link, "creative-height"); //RemoveDuplicateElement(link, "creative-width"); //} }; //request.RootElement = timeSeriesResourceType.GetRootElement(); var response = restClient.Execute<TimeSeriesDataListInt>(request); HandleResponse(response); /* */ return response.Data; }
public TimeSeriesDataListInt GetTimeSeriesInt(TimeSeriesResourceType timeSeriesResourceType, DateTime baseDate, string endDateOrPeriod, string userId) { string userSignifier = "-"; //used for current user if (!string.IsNullOrWhiteSpace(userId)) { userSignifier = userId; } string requestUrl = string.Format("/1/user/{0}{1}/date/{2}/{3}.xml", userSignifier, timeSeriesResourceType.GetStringValue(), baseDate.ToString("yyyy-MM-dd"), endDateOrPeriod); RestRequest request = new RestRequest(requestUrl); request.OnBeforeDeserialization = resp => { XDocument doc = XDocument.Parse(resp.Content); //IEnumerable<XElement> links = doc.Descendants("result"); var rootElement = doc.Descendants("result").FirstOrDefault().Descendants().FirstOrDefault(); if (rootElement != null && !string.IsNullOrWhiteSpace(rootElement.Name.LocalName)) { request.RootElement = rootElement.Name.LocalName; } //foreach (XElement link in links) //{ //RemoveDuplicateElement(link, "category"); //RemoveDuplicateElement(link, "click-commission"); //RemoveDuplicateElement(link, "creative-height"); //RemoveDuplicateElement(link, "creative-width"); //} }; //request.RootElement = timeSeriesResourceType.GetRootElement(); var response = restClient.Execute <TimeSeriesDataListInt>(request); HandleResponse(response); /* */ return(response.Data); }