Beispiel #1
0
        /// <summary>
        /// Logs the specified WaterLog item for the current logged in user - https://wiki.fitbit.com/display/API/API-Log-Water
        /// </summary>
        /// <param name="date"></param>
        /// <param name="log"></param>
        /// <returns></returns>
        public async Task <FitbitResponse <WaterLog> > LogWaterAsync(DateTime date, WaterLog log)
        {
            string apiCall = FitbitClientHelperExtensions.ToFullUrl("/1/user/-/foods/log/water.json");

            var items = new Dictionary <string, string>();

            items.Add("amount", log.Amount.ToString());
            items.Add("date", date.ToFitbitFormat());
            apiCall = string.Format("{0}?{1}", apiCall, string.Join("&", items.Select(x => string.Format("{0}={1}", x.Key, x.Value))));

            HttpResponseMessage response = await HttpClient.PostAsync(apiCall, new StringContent(string.Empty));

            var fitbitResponse = await HandleResponse <WaterLog>(response);

            if (fitbitResponse.Success)
            {
                string responseBody = await response.Content.ReadAsStringAsync();

                var serializer = new JsonDotNetSerializer {
                    RootProperty = "waterLog"
                };
                fitbitResponse.Data = serializer.Deserialize <WaterLog>(responseBody);
            }

            return(fitbitResponse);
        }
Beispiel #2
0
        private void ValidateWaterData(WaterData result)
        {
            WaterLog firstWaterLog = result.Water.FirstOrDefault();

            Assert.IsNotNull(result);
            Assert.AreEqual(1300, result.Summary.Water);
            Assert.AreEqual(5, result.Water.Count);

            Assert.IsNotNull(firstWaterLog);
            Assert.AreEqual(200, firstWaterLog.Amount);
            Assert.AreEqual(508693835, firstWaterLog.LogId);
        }
Beispiel #3
0
        public void Can_Deserialize_Water_Log_Json()
        {
            string content = SampleDataHelper.GetContent("LogWater-WaterLog.json");

            var deserializer = new JsonDotNetSerializer {
                RootProperty = "waterLog"
            };

            WaterLog result = deserializer.Deserialize <WaterLog>(content);

            Assert.IsNotNull(result);
            Assert.AreEqual(508728882, result.LogId);
            Assert.AreEqual(300, result.Amount);
        }
Beispiel #4
0
        public void Log_Single_Water_For_User_On_Date()
        {
            var      logDate = new DateTime(2014, 11, 17); //the date for which the sample waterlog will be added
            WaterLog log     = new WaterLog
            {
                LogId  = -1,
                Amount = 300
            };


            WaterLog response = client.LogWater(logDate, log, Configuration.FitbitUserId);

            Assert.IsNotNull(response);
            Assert.AreEqual(log.Amount, response.Amount);
            Assert.AreNotEqual(-1, response.LogId);
            Assert.IsTrue(response.LogId > 0);
        }
Beispiel #5
0
        public WaterLog LogWater(DateTime date, WaterLog log, string userId)
        {
            string userSignifier = "-"; // used for current user

            if (!string.IsNullOrWhiteSpace(userId))
            {
                userSignifier = userId;
            }

            string      endPoint = string.Format("/1/user/{0}/foods/log/water.json", userSignifier);
            RestRequest request  = new RestRequest(endPoint, Method.POST);

            request.RootElement = "waterLog";
            AddPostParameter(request, "amount", log.Amount);
            AddPostParameter(request, "date", date.ToString("yyyy-MM-dd"));

            var response = restClient.Execute <WaterLog>(request);

            HandleResponse(response);

            return(response.Data);
        }
Beispiel #6
0
        public async Task PostWaterLogAsync_Success()
        {
            string content = SampleDataHelper.GetContent("LogWater-WaterLog.json");

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

            Action <HttpRequestMessage, CancellationToken> verification = new Action <HttpRequestMessage, CancellationToken>((message, token) =>
            {
                Assert.AreEqual(HttpMethod.Post, message.Method);
                Assert.AreEqual("https://api.fitbit.com/1/user/-/foods/log/water.json?amount=300&date=2015-01-12", message.RequestUri.AbsoluteUri);
            });

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

            WaterLog response = await fitbitClient.LogWaterAsync(new DateTime(2015, 1, 12), new WaterLog { Amount = 300 });

            Assert.AreEqual(300, response.Amount);
        }
Beispiel #7
0
		public WaterLogDto Get(WaterLog request)
		{
			return _api.Read (request.Id);
		}
Beispiel #8
0
 public WaterLog LogWater(DateTime date, WaterLog log)
 {
     return(LogWater(date, log, string.Empty));
 }