/// <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); }
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); }
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); }
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); }
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); }
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); }
public WaterLogDto Get(WaterLog request) { return _api.Read (request.Id); }
public WaterLog LogWater(DateTime date, WaterLog log) { return(LogWater(date, log, string.Empty)); }