/// <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("/", "-");
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        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;

        }
예제 #4
0
        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);
        }