From eb80cefe2bb55500dd0ed08fa739cf5694e48bac Mon Sep 17 00:00:00 2001 From: Mauricio Aviles Date: Mon, 14 Mar 2016 11:06:35 -0700 Subject: [PATCH] We now adhere to new subscription url format --- Fitbit.Portable.Tests/AddSubscriptionTests.cs | 24 +++++++++---------- Fitbit.Portable/FitbitClient.cs | 9 ++++--- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/Fitbit.Portable.Tests/AddSubscriptionTests.cs b/Fitbit.Portable.Tests/AddSubscriptionTests.cs index 0571a858..6eab6750 100644 --- a/Fitbit.Portable.Tests/AddSubscriptionTests.cs +++ b/Fitbit.Portable.Tests/AddSubscriptionTests.cs @@ -71,7 +71,7 @@ public async void AddSubscription_ActivitiesEndPoint_WithoutSubscriberId() Assert.AreEqual(0, message.Headers.Count()); }; - var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/activities/apiSubscriptions/323-activities.json", HttpMethod.Post, additionalChecks); + var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/activities/apiSubscriptions/323.json", HttpMethod.Post, additionalChecks); var response = await fitbitClient.AddSubscriptionAsync(APICollectionType.activities, "323"); @@ -93,7 +93,7 @@ public async void AddSubscription_ActivitiesEndPoint_WithSubscriberId() Assert.AreEqual(SubScriberId, headerValues.First()); }; - var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/activities/apiSubscriptions/323-activities.json", HttpMethod.Post, additionalChecks); + var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/activities/apiSubscriptions/323.json", HttpMethod.Post, additionalChecks); var response = await fitbitClient.AddSubscriptionAsync(APICollectionType.activities, "323", SubScriberId); @@ -109,7 +109,7 @@ public async void AddSubscription_BodyEndPoint_WithoutSubscriberId() Assert.AreEqual(0, message.Headers.Count()); }; - var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/body/apiSubscriptions/323-body.json", HttpMethod.Post, additionalChecks); + var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/body/apiSubscriptions/323.json", HttpMethod.Post, additionalChecks); var response = await fitbitClient.AddSubscriptionAsync(APICollectionType.body, "323"); @@ -131,7 +131,7 @@ public async void AddSubscription_BodyEndPoint_WithSubscriberId() Assert.AreEqual(SubScriberId, headerValues.First()); }; - var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/body/apiSubscriptions/323-body.json", HttpMethod.Post, additionalChecks); + var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/body/apiSubscriptions/323.json", HttpMethod.Post, additionalChecks); var response = await fitbitClient.AddSubscriptionAsync(APICollectionType.body, "323", SubScriberId); @@ -147,7 +147,7 @@ public async void AddSubscription_FoodEndPoint_WithoutSubscriberId() Assert.AreEqual(0, message.Headers.Count()); }; - var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/foods/apiSubscriptions/323-foods.json", HttpMethod.Post, additionalChecks); + var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/foods/apiSubscriptions/323.json", HttpMethod.Post, additionalChecks); var response = await fitbitClient.AddSubscriptionAsync(APICollectionType.foods, "323"); @@ -169,7 +169,7 @@ public async void AddSubscription_FoodEndPoint_WithSubscriberId() Assert.AreEqual(SubScriberId, headerValues.First()); }; - var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/foods/apiSubscriptions/323-foods.json", HttpMethod.Post, additionalChecks); + var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/foods/apiSubscriptions/323.json", HttpMethod.Post, additionalChecks); var response = await fitbitClient.AddSubscriptionAsync(APICollectionType.foods, "323", SubScriberId); @@ -185,7 +185,7 @@ public async void AddSubscription_MealsEndPoint_WithoutSubscriberId() Assert.AreEqual(0, message.Headers.Count()); }; - var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/meals/apiSubscriptions/323-meals.json", HttpMethod.Post, additionalChecks); + var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/meals/apiSubscriptions/323.json", HttpMethod.Post, additionalChecks); var response = await fitbitClient.AddSubscriptionAsync(APICollectionType.meals, "323"); @@ -207,7 +207,7 @@ public async void AddSubscription_MealsEndPoint_WithSubscriberId() Assert.AreEqual(SubScriberId, headerValues.First()); }; - var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/meals/apiSubscriptions/323-meals.json", HttpMethod.Post, additionalChecks); + var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/meals/apiSubscriptions/323.json", HttpMethod.Post, additionalChecks); var response = await fitbitClient.AddSubscriptionAsync(APICollectionType.meals, "323", SubScriberId); @@ -223,7 +223,7 @@ public async void AddSubscription_SleepEndPoint_WithoutSubscriberId() Assert.AreEqual(0, message.Headers.Count()); }; - var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/sleep/apiSubscriptions/323-sleep.json", HttpMethod.Post, additionalChecks); + var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/sleep/apiSubscriptions/323.json", HttpMethod.Post, additionalChecks); var response = await fitbitClient.AddSubscriptionAsync(APICollectionType.sleep, "323"); @@ -245,7 +245,7 @@ public async void AddSubscription_SleepEndPoint_WithSubscriberId() Assert.AreEqual(SubScriberId, headerValues.First()); }; - var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/sleep/apiSubscriptions/323-sleep.json", HttpMethod.Post, additionalChecks); + var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/sleep/apiSubscriptions/323.json", HttpMethod.Post, additionalChecks); var response = await fitbitClient.AddSubscriptionAsync(APICollectionType.sleep, "323", SubScriberId); @@ -261,7 +261,7 @@ public async void AddSubscription_WeightEndPoint_WithoutSubscriberId() Assert.AreEqual(0, message.Headers.Count()); }; - var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/weight/apiSubscriptions/323-weight.json", HttpMethod.Post, additionalChecks); + var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/weight/apiSubscriptions/323.json", HttpMethod.Post, additionalChecks); var response = await fitbitClient.AddSubscriptionAsync(APICollectionType.weight, "323"); @@ -283,7 +283,7 @@ public async void AddSubscription_WeightEndPoint_WithSubscriberId() Assert.AreEqual(SubScriberId, headerValues.First()); }; - var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/weight/apiSubscriptions/323-weight.json", HttpMethod.Post, additionalChecks); + var fitbitClient = SetupFitbitClient("AddSubscriptionResponse.json", "https://api.fitbit.com/1/user/-/weight/apiSubscriptions/323.json", HttpMethod.Post, additionalChecks); var response = await fitbitClient.AddSubscriptionAsync(APICollectionType.weight, "323", SubScriberId); diff --git a/Fitbit.Portable/FitbitClient.cs b/Fitbit.Portable/FitbitClient.cs index 51af3d13..2345638e 100644 --- a/Fitbit.Portable/FitbitClient.cs +++ b/Fitbit.Portable/FitbitClient.cs @@ -699,11 +699,14 @@ public async Task> GetSubscriptionsAsync() /// public async Task AddSubscriptionAsync(APICollectionType apiCollectionType, string uniqueSubscriptionId, string subscriberId = default(string)) { + //This function is smart enough to know when to return an empty string (for apiCollectionType.user) or the proper collection type suffixed by a slash string path = FormatKey(apiCollectionType, Constants.Formatting.TrailingSlash); - string resource = FormatKey(apiCollectionType, Constants.Formatting.LeadingDash); - string url = "/1/user/-/{1}apiSubscriptions/{3}{2}.json"; - string apiCall = FitbitClientHelperExtensions.ToFullUrl(url, args: new object[] {path, resource, uniqueSubscriptionId}); + //sometimes {path} will be an empty string but when it is not, it will have a slash suffix is in foods/apiSubscriptions + string url = $"/1/user/-/{path}apiSubscriptions/{uniqueSubscriptionId}.json"; + + //TODO: + string apiCall = FitbitClientHelperExtensions.ToFullUrl(url, args: new object[] {path}); if (!string.IsNullOrWhiteSpace(subscriberId)) { HttpClient.DefaultRequestHeaders.Add(Constants.Headers.XFitbitSubscriberId, subscriberId);