From cccf3128c201598cc6d2ade6da19729eb5323b03 Mon Sep 17 00:00:00 2001 From: Adam Storr Date: Sun, 29 May 2016 09:57:31 +0100 Subject: [PATCH 1/3] Make the parameter order consistent with Add #167 --- Fitbit.Portable.Tests/RemoveSubscriptionTests.cs | 4 ++-- Fitbit.Portable/FitbitClient.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Fitbit.Portable.Tests/RemoveSubscriptionTests.cs b/Fitbit.Portable.Tests/RemoveSubscriptionTests.cs index b532b91d..42ffd200 100644 --- a/Fitbit.Portable.Tests/RemoveSubscriptionTests.cs +++ b/Fitbit.Portable.Tests/RemoveSubscriptionTests.cs @@ -27,7 +27,7 @@ public void DeleteSubscription_Correctly() //Any unexpected behavior will throw exception or fail on request checks (in handler) //Pass APICollectionType.user to delete subscriptions for all data sets - sut.DeleteSubscriptionAsync(subId, APICollectionType.user).Wait(); + sut.DeleteSubscriptionAsync(APICollectionType.user, subId).Wait(); } [Test] @@ -42,7 +42,7 @@ public void DeleteSubscriptonFromSpecificCollection() var sut = this.SetupFitbitClient(null, expectedUrl, HttpMethod.Delete); //Any unexpected behavior will throw exception or fail on request checks (in handler) - sut.DeleteSubscriptionAsync(subId, collection).Wait(); + sut.DeleteSubscriptionAsync(collection, subId).Wait(); } diff --git a/Fitbit.Portable/FitbitClient.cs b/Fitbit.Portable/FitbitClient.cs index 1b9fa7b8..08b179ba 100644 --- a/Fitbit.Portable/FitbitClient.cs +++ b/Fitbit.Portable/FitbitClient.cs @@ -777,7 +777,7 @@ private async Task HandleResponse(HttpResponseMessage response) } } - public async Task DeleteSubscriptionAsync(string uniqueSubscriptionId, APICollectionType collection, string subscriberId = null) + public async Task DeleteSubscriptionAsync(APICollectionType collection, string uniqueSubscriptionId, string subscriberId = null) { var collectionString = string.Empty; From 48f0fb97f830e0252b60200fcad58de329a54955 Mon Sep 17 00:00:00 2001 From: Adam Storr Date: Sun, 29 May 2016 09:59:05 +0100 Subject: [PATCH 2/3] Re-order method in class --- Fitbit.Portable/FitbitClient.cs | 53 +++++++++++++++++---------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/Fitbit.Portable/FitbitClient.cs b/Fitbit.Portable/FitbitClient.cs index 08b179ba..26da1006 100644 --- a/Fitbit.Portable/FitbitClient.cs +++ b/Fitbit.Portable/FitbitClient.cs @@ -716,6 +716,33 @@ public async Task AddSubscriptionAsync(APICollectionType apiCol return serializer.Deserialize(responseBody); } + + public async Task DeleteSubscriptionAsync(APICollectionType collection, string uniqueSubscriptionId, string subscriberId = null) + { + var collectionString = string.Empty; + + if (collection == APICollectionType.user) + collectionString = string.Empty; + else + collectionString = collection.ToString() + @"/"; + + string url = "/1/user/-/{2}apiSubscriptions/{1}.json"; + string apiCall = FitbitClientHelperExtensions.ToFullUrl(url, args: new object[] { uniqueSubscriptionId, collectionString }); + + if (subscriberId != null) + { + HttpClient.DefaultRequestHeaders.Add(Constants.Headers.XFitbitSubscriberId, subscriberId); + } + + var response = await HttpClient.DeleteAsync(apiCall); + + if (response.StatusCode != HttpStatusCode.NoContent) + { + var errors = new JsonDotNetSerializer().ParseErrors(await response.Content.ReadAsStringAsync()); + throw new FitbitException("Unexpected response message", errors); + } + } + private string FormatKey(APICollectionType apiCollectionType, string format) { string strValue = apiCollectionType == APICollectionType.user ? string.Empty : apiCollectionType.ToString(); @@ -776,31 +803,5 @@ private async Task HandleResponse(HttpResponseMessage response) throw new FitbitException($"An error has occured. Please see error list for details - {response.StatusCode}", errors); } } - - public async Task DeleteSubscriptionAsync(APICollectionType collection, string uniqueSubscriptionId, string subscriberId = null) - { - var collectionString = string.Empty; - - if (collection == APICollectionType.user) - collectionString = string.Empty; - else - collectionString = collection.ToString() + @"/"; - - string url = "/1/user/-/{2}apiSubscriptions/{1}.json"; - string apiCall = FitbitClientHelperExtensions.ToFullUrl(url, args: new object[] { uniqueSubscriptionId, collectionString }); - - if (subscriberId != null) - { - HttpClient.DefaultRequestHeaders.Add(Constants.Headers.XFitbitSubscriberId, subscriberId); - } - - var response = await HttpClient.DeleteAsync(apiCall); - - if (response.StatusCode != HttpStatusCode.NoContent) - { - var errors = new JsonDotNetSerializer().ParseErrors(await response.Content.ReadAsStringAsync()); - throw new FitbitException("Unexpected response message", errors); - } - } } } \ No newline at end of file From e4f277e47fca4a5c7a46447af652bffc0aacfdc8 Mon Sep 17 00:00:00 2001 From: Adam Storr Date: Sun, 29 May 2016 10:12:10 +0100 Subject: [PATCH 3/3] Added delete subscription method to IFitbitClient interface --- Fitbit.Portable/IFitbitClient.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Fitbit.Portable/IFitbitClient.cs b/Fitbit.Portable/IFitbitClient.cs index d61b72f0..e25593f6 100644 --- a/Fitbit.Portable/IFitbitClient.cs +++ b/Fitbit.Portable/IFitbitClient.cs @@ -33,5 +33,6 @@ public interface IFitbitClient Task> GetSubscriptionsAsync(); Task AddSubscriptionAsync(APICollectionType apiCollectionType, string uniqueSubscriptionId, string subscriberId = default(string)); + Task DeleteSubscriptionAsync(APICollectionType collection, string uniqueSubscriptionId, string subscriberId = null); } } \ No newline at end of file