diff --git a/PocketSharp.Examples/PocketSharp.WP8/ViewModels/MainViewModel.cs b/PocketSharp.Examples/PocketSharp.WP8/ViewModels/MainViewModel.cs index 7a6c6de..c02b580 100644 --- a/PocketSharp.Examples/PocketSharp.WP8/ViewModels/MainViewModel.cs +++ b/PocketSharp.Examples/PocketSharp.WP8/ViewModels/MainViewModel.cs @@ -5,6 +5,7 @@ using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; using System.Threading.Tasks; +using System.Linq; namespace PocketSharp.WP8.ViewModels { @@ -74,7 +75,7 @@ namespace PocketSharp.WP8.ViewModels try { - items = await client.Get(); + items = (await client.Get()).ToList(); items.ForEach(item => { diff --git a/PocketSharp.Examples/PocketSharp.Wpf/MainWindow.xaml.cs b/PocketSharp.Examples/PocketSharp.Wpf/MainWindow.xaml.cs index 6b6a894..fd439a7 100644 --- a/PocketSharp.Examples/PocketSharp.Wpf/MainWindow.xaml.cs +++ b/PocketSharp.Examples/PocketSharp.Wpf/MainWindow.xaml.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.Windows; +using System.Linq; namespace PocketSharp.Wpf { @@ -40,7 +41,7 @@ namespace PocketSharp.Wpf try { - items = await client.Get(); + items = (await client.Get()).ToList(); items.ForEach(item => { diff --git a/PocketSharp.Tests/AddTests.cs b/PocketSharp.Tests/AddTests.cs index 06d6952..00bcd0b 100644 --- a/PocketSharp.Tests/AddTests.cs +++ b/PocketSharp.Tests/AddTests.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; using Xunit; +using System.Linq; namespace PocketSharp.Tests { @@ -47,7 +48,7 @@ namespace PocketSharp.Tests tweetID: "380051788172632065" ); - List items = await client.Get(); + List items = (await client.Get()).ToList(); PocketItem itemDesired = null; items.ForEach(itm => @@ -60,7 +61,7 @@ namespace PocketSharp.Tests Assert.NotNull(itemDesired); Assert.Equal(itemDesired.ID, item.ID); - Assert.Equal(itemDesired.Tags.Count, 3); + Assert.Equal(itemDesired.Tags.Count(), 3); itemsToDelete.Add(item.ID); } diff --git a/PocketSharp.Tests/GetTests.cs b/PocketSharp.Tests/GetTests.cs index 1d56f63..9aca240 100644 --- a/PocketSharp.Tests/GetTests.cs +++ b/PocketSharp.Tests/GetTests.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; using Xunit; +using System.Linq; namespace PocketSharp.Tests { @@ -16,7 +17,7 @@ namespace PocketSharp.Tests [Fact] public async Task AreItemsRetrieved() { - List items = await client.Get(); + List items = (await client.Get()).ToList(); Assert.True(items.Count > 0); } @@ -24,7 +25,7 @@ namespace PocketSharp.Tests [Fact] public async Task IsItemRetrievedById() { - List items = await client.Get(); + List items = (await client.Get()).ToList(); PocketItem item = items[0]; PocketItem itemDuplicate = await client.Get(item.ID); @@ -35,7 +36,7 @@ namespace PocketSharp.Tests [Fact] public async Task IsItemJsonPopulated() { - List items = await client.Get(); + List items = (await client.Get()).ToList(); string schemaJson = @"{ 'description': 'PocketItem', 'type': 'object' @@ -53,16 +54,16 @@ namespace PocketSharp.Tests [Fact] public async Task AreFilteredItemsRetrieved() { - List items = await client.Get(RetrieveFilter.Favorite); + IEnumerable items = await client.Get(RetrieveFilter.Favorite); - Assert.True(items.Count > 0); + Assert.True(items.Count() > 0); } [Fact] public async Task RetrieveWithMultipleFilters() { - List items = await client.Get( + IEnumerable items = await client.Get( state: State.unread, tag: "pocket", sort: Sort.title, @@ -70,29 +71,29 @@ namespace PocketSharp.Tests count: 2 ); - Assert.InRange(items.Count, 0, 2); + Assert.InRange(items.Count(), 0, 2); } [Fact] public async Task ItemContainsUri() { - List items = await client.Get(count: 1); + IEnumerable items = await client.Get(count: 1); - Assert.True(items.Count == 1); - Assert.True(items[0].Uri.ToString().StartsWith("http")); + Assert.True(items.Count() == 1); + Assert.True(items.First().Uri.ToString().StartsWith("http")); } [Fact] public async Task InvalidRetrievalReturnsNoResults() { - List items = await client.Get( + IEnumerable items = await client.Get( favorite: true, search: "xoiu987a#;" ); - Assert.False(items.Count > 0); + Assert.False(items.Count() > 0); PocketItem item = await client.Get("99999999"); @@ -100,48 +101,48 @@ namespace PocketSharp.Tests items = await client.Get(RetrieveFilter.Video); - Assert.False(items.Count > 0); + Assert.False(items.Count() > 0); } [Fact] public async Task SearchReturnsResult() { - List items = await client.Search("pocket"); + IEnumerable items = await client.Search("pocket"); - Assert.True(items.Count > 0); - Assert.True(items[0].FullTitle.ToLower().Contains("pocket")); + Assert.True(items.Count() > 0); + Assert.True(items.First().FullTitle.ToLower().Contains("pocket")); } [Fact] public async Task InvalidSearchReturnsNoResult() { - List items = await client.Search("adsüasd-opiu2;.398dfyx"); + IEnumerable items = await client.Search("adsüasd-opiu2;.398dfyx"); - Assert.False(items.Count > 0); + Assert.False(items.Count() > 0); } [Fact] public async Task RetrieveTagsReturnsResult() { - List items = await client.GetTags(); + IEnumerable items = await client.GetTags(); - Assert.True(items.Count > 0); + Assert.True(items.Count() > 0); } [Fact] public async Task SearchByTagsReturnsResult() { - List items = await client.SearchByTag("pocket"); + IEnumerable items = await client.SearchByTag("pocket"); - Assert.True(items.Count == 1); + Assert.True(items.Count() == 1); bool found = false; - items[0].Tags.ForEach(tag => + items.First().Tags.ToList().ForEach(tag => { if (tag.Name.Contains("pocket")) { @@ -156,9 +157,9 @@ namespace PocketSharp.Tests [Fact] public async Task InvalidSearchByTagsReturnsNoResult() { - List items = await client.SearchByTag("adsüasd-opiu2;.398dfyx"); + IEnumerable items = await client.SearchByTag("adsüasd-opiu2;.398dfyx"); - Assert.False(items.Count > 0); + Assert.False(items.Count() > 0); } @@ -183,10 +184,10 @@ namespace PocketSharp.Tests [Fact] public async Task IsNewPocketItemListGeneratorWorking() { - List items = await client.Get(count: 1, tag: "pocket"); - PocketItem item = items[0]; + IEnumerable items = await client.Get(count: 1, tag: "pocket"); + PocketItem item = items.First(); - Assert.True(item.Tags.Find(i => i.Name == "pocket") != null); + Assert.True(item.Tags.ToList().Find(i => i.Name == "pocket") != null); } @@ -195,20 +196,20 @@ namespace PocketSharp.Tests { DateTime since = DateTime.UtcNow; - List items = await client.Get(state: State.all); - PocketItem itemToModify = items[0]; + IEnumerable items = await client.Get(state: State.all); + PocketItem itemToModify = items.First(); - Assert.True(items.Count >= 3); + Assert.True(items.Count() >= 3); items = await client.Get(state: State.all, since: since); - Assert.True(items == null || items.Count == 0); + Assert.True(items == null || items.Count() == 0); await client.AddTags(itemToModify, new string[] { "pocketsharp" }); items = await client.Get(state: State.all, since: since); - Assert.True(items.Count > 0); + Assert.True(items.Count() > 0); await client.RemoveTags(itemToModify, new string[] { "pocketsharp" }); } @@ -219,20 +220,20 @@ namespace PocketSharp.Tests { DateTime since = DateTime.UtcNow; - List items = await client.Get(state: State.all); - PocketItem itemToModify = items[0]; + IEnumerable items = await client.Get(state: State.all); + PocketItem itemToModify = items.First(); - Assert.True(items.Count >= 3); + Assert.True(items.Count() >= 3); items = await client.Get(state: State.all, since: since); - Assert.True(items == null || items.Count == 0); + Assert.True(items == null || items.Count() == 0); await client.Favorite(itemToModify); items = await client.Get(state: State.all, since: since); - Assert.True(items.Count > 0); + Assert.True(items.Count() > 0); await client.Unfavorite(itemToModify); @@ -242,7 +243,7 @@ namespace PocketSharp.Tests items = await client.Get(state: State.all, since: since); - Assert.True(items.Count > 0); + Assert.True(items.Count() > 0); await client.Unarchive(itemToModify); } @@ -255,7 +256,7 @@ namespace PocketSharp.Tests PocketItem item = await client.Add(new Uri("http://frontendplay.com")); - List items = await client.Get(state: State.all, since: since); + IEnumerable items = await client.Get(state: State.all, since: since); since = DateTime.UtcNow; @@ -263,7 +264,7 @@ namespace PocketSharp.Tests items = await client.Get(state: State.all, since: since); - Assert.True(items.Count == 1 && items[0].IsDeleted); + Assert.True(items.Count() == 1 && items.First().IsDeleted); } [Fact] @@ -271,11 +272,11 @@ namespace PocketSharp.Tests { PocketItem item = await client.Add(new Uri("http://de.ign.com/m/feature/21608/die-20-besten-kurzfilme-des-jahres-2013?bust=1")); - List items = await client.Get(state: State.all); + IEnumerable items = await client.Get(state: State.all); Assert.NotNull(item.Uri); - Assert.NotNull(items[0].Uri); - Assert.Equal(item.Uri, items[0].Uri); + Assert.NotNull(items.First().Uri); + Assert.Equal(item.Uri, items.First().Uri); itemsToDelete.Add(item.ID); } diff --git a/PocketSharp.Tests/MiscTests.cs b/PocketSharp.Tests/MiscTests.cs index f5024fa..248b5fd 100644 --- a/PocketSharp.Tests/MiscTests.cs +++ b/PocketSharp.Tests/MiscTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Threading.Tasks; using Xunit; +using System.Linq; namespace PocketSharp.Tests { @@ -19,8 +20,8 @@ namespace PocketSharp.Tests [Fact] public async Task CheckPreRequestAction() { - List items = await client.Get(count: 1); - PocketItem item = items[0]; + IEnumerable items = await client.Get(count: 1); + PocketItem item = items.First(); await client.Favorite(item); await client.Unfavorite(item); diff --git a/PocketSharp.Tests/ModifyTagsTests.cs b/PocketSharp.Tests/ModifyTagsTests.cs index a675456..f1ebf0e 100644 --- a/PocketSharp.Tests/ModifyTagsTests.cs +++ b/PocketSharp.Tests/ModifyTagsTests.cs @@ -21,7 +21,7 @@ namespace PocketSharp.Tests item = await GetItemById(item.ID); - Assert.True(item.Tags.Count >= 2); + Assert.True(item.Tags.Count() >= 2); Assert.NotNull(item.Tags.Single(tag => tag.Name == "test_tag")); Assert.NotNull(item.Tags.Single(tag => tag.Name == "test_tag2")); @@ -44,7 +44,7 @@ namespace PocketSharp.Tests item = await GetItemById(item.ID); - Assert.True(item.Tags.Count >= 2); + Assert.True(item.Tags.Count() >= 2); Assert.True(await client.RemoveTags(item)); @@ -63,7 +63,7 @@ namespace PocketSharp.Tests item = await GetItemById(item.ID); - Assert.Equal(item.Tags.Count, 2); + Assert.Equal(item.Tags.Count(), 2); Assert.NotNull(item.Tags.SingleOrDefault(tag => tag.Name == "test_tag")); Assert.NotNull(item.Tags.SingleOrDefault(tag => tag.Name == "test_tag2")); @@ -85,7 +85,7 @@ namespace PocketSharp.Tests private async Task GetItemById(string id, bool archive = false) { - List items = await client.Get(state: archive ? State.archive : State.unread); + List items = (await client.Get(state: archive ? State.archive : State.unread)).ToList(); PocketItem itemDesired = null; items.ForEach(itm => diff --git a/PocketSharp.Tests/ModifyTests.cs b/PocketSharp.Tests/ModifyTests.cs index ee235fb..ca99e8e 100644 --- a/PocketSharp.Tests/ModifyTests.cs +++ b/PocketSharp.Tests/ModifyTests.cs @@ -137,7 +137,7 @@ namespace PocketSharp.Tests private async Task GetItemById(string id, bool archive = false) { - List items = await client.Get(state: archive ? State.archive : State.unread); + List items = (await client.Get(state: archive ? State.archive : State.unread)).ToList(); PocketItem itemDesired = null; items.ForEach(itm => diff --git a/PocketSharp.Tests/StressTests.cs b/PocketSharp.Tests/StressTests.cs index 20210be..30fa7c1 100644 --- a/PocketSharp.Tests/StressTests.cs +++ b/PocketSharp.Tests/StressTests.cs @@ -30,50 +30,50 @@ namespace PocketSharp.Tests [Fact] public async Task Are100ItemsRetrievedProperly() { - List items = await client.Get(count: 100, state: State.all); - Assert.True(items.Count == 100); + IEnumerable items = await client.Get(count: 100, state: State.all); + Assert.True(items.Count() == 100); } [Fact] public async Task Are1000ItemsRetrievedProperly() { - List items = await client.Get(count: 1000, state: State.all); - Assert.True(items.Count == 1000); + IEnumerable items = await client.Get(count: 1000, state: State.all); + Assert.True(items.Count() == 1000); } [Fact] public async Task Are2500ItemsRetrievedProperly() { - List items = await client.Get(count: 2500, state: State.all); - Assert.True(items.Count == 2500); + IEnumerable items = await client.Get(count: 2500, state: State.all); + Assert.True(items.Count() == 2500); } [Fact] public async Task Are5000ItemsRetrievedProperly() { - List items = await client.Get(count: 5000, state: State.all); - Assert.True(items.Count == 5000); + IEnumerable items = await client.Get(count: 5000, state: State.all); + Assert.True(items.Count() == 5000); } [Fact] public async Task IsSearchSuccessfullyOnBigList() { - List items = await client.Get(search: "google"); + IEnumerable items = await client.Get(search: "google"); - Assert.True(items.Count > 0); - Assert.True(items[0].Title.ToLower().Contains("google") || items[0].Uri.ToString().ToLower().Contains("google")); + Assert.True(items.Count() > 0); + Assert.True(items.First().Title.ToLower().Contains("google") || items.First().Uri.ToString().ToLower().Contains("google")); } [Fact] public async Task IsTagSearchSuccessfullyOnBigList() { - List items = await client.SearchByTag(tags[0]); + IEnumerable items = await client.SearchByTag(tags[0]); - Assert.True(items.Count > 1); + Assert.True(items.Count() > 1); bool found = false; - items[0].Tags.ForEach(tag => + items.First().Tags.ToList().ForEach(tag => { if (tag.Name.Contains(tags[0])) { @@ -87,7 +87,7 @@ namespace PocketSharp.Tests [Fact] public async Task RetrieveTagsReturnsResultOnBigList() { - List items = await client.GetTags(); + List items = (await client.GetTags()).ToList(); items.ForEach(tag => { diff --git a/PocketSharp/Components/Get.cs b/PocketSharp/Components/Get.cs index 753b227..fa5a46d 100644 --- a/PocketSharp/Components/Get.cs +++ b/PocketSharp/Components/Get.cs @@ -29,7 +29,7 @@ namespace PocketSharp /// The cancellation token. /// /// - public async Task> Get( + public async Task> Get( State? state = null, bool? favorite = null, string tag = null, @@ -58,9 +58,7 @@ namespace PocketSharp Offset = offset }; - Retrieve response = await Request("get", cancellationToken, parameters.Convert()); - - return response.Items; + return (await Request("get", cancellationToken, parameters.Convert())).Items; } @@ -74,12 +72,10 @@ namespace PocketSharp /// public async Task Get(string itemID, CancellationToken cancellationToken = default(CancellationToken)) { - List items = await Get( + return (await Get( cancellationToken: cancellationToken, state: State.all - ); - - return items.SingleOrDefault(item => item.ID == itemID); + )).SingleOrDefault(item => item.ID == itemID); } @@ -90,7 +86,7 @@ namespace PocketSharp /// The cancellation token. /// /// - public async Task> Get(RetrieveFilter filter, CancellationToken cancellationToken = default(CancellationToken)) + public async Task> Get(RetrieveFilter filter, CancellationToken cancellationToken = default(CancellationToken)) { RetrieveParameters parameters = new RetrieveParameters(); @@ -121,9 +117,7 @@ namespace PocketSharp parameters.DetailType = DetailType.complete; - Retrieve response = await Request("get", cancellationToken, parameters.Convert()); - - return response.Items; + return (await Request("get", cancellationToken, parameters.Convert())).Items; } @@ -134,18 +128,19 @@ namespace PocketSharp /// The cancellation token. /// /// - public async Task> GetTags(CancellationToken cancellationToken = default(CancellationToken)) + public async Task> GetTags(CancellationToken cancellationToken = default(CancellationToken)) { - List items = await Get( + IEnumerable items = await Get( cancellationToken: cancellationToken, state: State.all ); - return items.Where(item => item.Tags != null) - .SelectMany(item => item.Tags) - .GroupBy(item => item.Name) - .Select(item => item.First()) - .ToList(); + return items + .Where(item => item.Tags != null) + .SelectMany(item => item.Tags) + .GroupBy(item => item.Name) + .Select(item => item.First()) + .ToList(); } @@ -156,7 +151,7 @@ namespace PocketSharp /// The cancellation token. /// /// - public async Task> SearchByTag(string tag, CancellationToken cancellationToken = default(CancellationToken)) + public async Task> SearchByTag(string tag, CancellationToken cancellationToken = default(CancellationToken)) { return await Get( state: State.all, @@ -175,7 +170,7 @@ namespace PocketSharp /// /// Search string length has to be a minimum of 2 chars /// - public async Task> Search(string searchString, string tag = null, CancellationToken cancellationToken = default(CancellationToken)) + public async Task> Search(string searchString, string tag = null, CancellationToken cancellationToken = default(CancellationToken)) { if (String.IsNullOrEmpty(searchString) || searchString.Length < 2) { diff --git a/PocketSharp/Components/Modify.cs b/PocketSharp/Components/Modify.cs index a4aeabe..b0462f5 100644 --- a/PocketSharp/Components/Modify.cs +++ b/PocketSharp/Components/Modify.cs @@ -18,7 +18,7 @@ namespace PocketSharp /// The cancellation token. /// /// - public async Task SendActions(List actions, CancellationToken cancellationToken = default(CancellationToken)) + public async Task SendActions(IEnumerable actions, CancellationToken cancellationToken = default(CancellationToken)) { return await Send(actions, cancellationToken); } diff --git a/PocketSharp/IPocketClient.cs b/PocketSharp/IPocketClient.cs index c418ebf..d7a7308 100644 --- a/PocketSharp/IPocketClient.cs +++ b/PocketSharp/IPocketClient.cs @@ -127,7 +127,7 @@ namespace PocketSharp /// The cancellation token. /// /// - Task> Get( + Task> Get( State? state = null, bool? favorite = null, string tag = null, @@ -158,7 +158,7 @@ namespace PocketSharp /// The cancellation token. /// /// - Task> Get(RetrieveFilter filter, CancellationToken cancellationToken = default(CancellationToken)); + Task> Get(RetrieveFilter filter, CancellationToken cancellationToken = default(CancellationToken)); /// /// Retrieves all available tags. @@ -167,7 +167,7 @@ namespace PocketSharp /// The cancellation token. /// /// - Task> GetTags(CancellationToken cancellationToken = default(CancellationToken)); + Task> GetTags(CancellationToken cancellationToken = default(CancellationToken)); /// /// Retrieves items by tag @@ -176,7 +176,7 @@ namespace PocketSharp /// The cancellation token. /// /// - Task> SearchByTag(string tag, CancellationToken cancellationToken = default(CancellationToken)); + Task> SearchByTag(string tag, CancellationToken cancellationToken = default(CancellationToken)); /// /// Retrieves items which match the specified search string in title and URI @@ -187,7 +187,7 @@ namespace PocketSharp /// /// Search string length has to be a minimum of 2 chars /// - Task> Search(string searchString, string tag = null, CancellationToken cancellationToken = default(CancellationToken)); + Task> Search(string searchString, string tag = null, CancellationToken cancellationToken = default(CancellationToken)); #endregion #region modify methods @@ -199,7 +199,7 @@ namespace PocketSharp /// The cancellation token. /// /// - Task SendActions(List actions, CancellationToken cancellationToken = default(CancellationToken)); + Task SendActions(IEnumerable actions, CancellationToken cancellationToken = default(CancellationToken)); /// /// Archives the specified item. diff --git a/PocketSharp/Models/Parameters/ModifyParameters.cs b/PocketSharp/Models/Parameters/ModifyParameters.cs index ffb2500..c2f5701 100644 --- a/PocketSharp/Models/Parameters/ModifyParameters.cs +++ b/PocketSharp/Models/Parameters/ModifyParameters.cs @@ -16,6 +16,6 @@ namespace PocketSharp.Models /// The actions. /// [DataMember(Name = "actions")] - public List> Actions { get; set; } + public IEnumerable> Actions { get; set; } } } diff --git a/PocketSharp/Models/Parameters/RegisterParameters.cs b/PocketSharp/Models/Parameters/RegisterParameters.cs deleted file mode 100644 index 722cc7b..0000000 --- a/PocketSharp/Models/Parameters/RegisterParameters.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System.Runtime.Serialization; - -namespace PocketSharp.Models -{ - /// - /// All parameters which can be passed to register a user - /// - [DataContract] - internal class RegisterParameters : Parameters - { - - /// - /// Gets or sets the username. - /// - /// - /// The username. - /// - [DataMember(Name = "username")] - public string Username { get; set; } - - /// - /// Gets or sets the E-Mail. - /// - /// - /// The E-Mail. - /// - [DataMember(Name = "email")] - public string Email { get; set; } - - /// - /// Gets or sets the password. - /// - /// - /// The password. - /// - [DataMember(Name = "password")] - public string Password { get; set; } - } -} diff --git a/PocketSharp/Models/PocketItem.cs b/PocketSharp/Models/PocketItem.cs index 311b9a0..6c243c3 100644 --- a/PocketSharp/Models/PocketItem.cs +++ b/PocketSharp/Models/PocketItem.cs @@ -322,7 +322,7 @@ namespace PocketSharp.Models /// [JsonProperty("tags")] [JsonConverter(typeof(ObjectToArrayConverter))] - public List Tags { get; set; } + public IEnumerable Tags { get; set; } /// /// Gets or sets the images. @@ -332,7 +332,7 @@ namespace PocketSharp.Models /// [JsonProperty("images")] [JsonConverter(typeof(ObjectToArrayConverter))] - public List Images { get; set; } + public IEnumerable Images { get; set; } /// /// Gets or sets the videos. @@ -342,7 +342,7 @@ namespace PocketSharp.Models /// [JsonProperty("videos")] [JsonConverter(typeof(ObjectToArrayConverter))] - public List Videos { get; set; } + public IEnumerable Videos { get; set; } /// /// Gets or sets the authors. @@ -352,7 +352,7 @@ namespace PocketSharp.Models /// [JsonProperty("authors")] [JsonConverter(typeof(ObjectToArrayConverter))] - public List Authors { get; set; } + public IEnumerable Authors { get; set; } /// /// Gets the lead image. @@ -363,7 +363,7 @@ namespace PocketSharp.Models [JsonIgnore] public PocketImage LeadImage { - get { return Images != null && Images.Count > 0 ? Images[0] : null; } + get { return Images != null && Images.Count() > 0 ? Images.First() : null; } } /// diff --git a/PocketSharp/Models/Response/Retrieve.cs b/PocketSharp/Models/Response/Retrieve.cs index b89db04..e25f7fa 100644 --- a/PocketSharp/Models/Response/Retrieve.cs +++ b/PocketSharp/Models/Response/Retrieve.cs @@ -36,6 +36,6 @@ namespace PocketSharp.Models /// [JsonProperty("list")] [JsonConverter(typeof(ObjectToArrayConverter))] - public List Items { get; set; } + public IEnumerable Items { get; set; } } } diff --git a/PocketSharp/PocketClient.cs b/PocketSharp/PocketClient.cs index 79f7563..cd422f7 100644 --- a/PocketSharp/PocketClient.cs +++ b/PocketSharp/PocketClient.cs @@ -8,6 +8,7 @@ using System.Net.Http; using System.Net.Http.Headers; using System.Threading; using System.Threading.Tasks; +using System.Linq; namespace PocketSharp { @@ -245,22 +246,13 @@ namespace PocketSharp /// /// The action parameters. /// - internal async Task Send(List actionParameters, CancellationToken cancellationToken) + internal async Task Send(IEnumerable actionParameters, CancellationToken cancellationToken) { - List> actionParamList = new List>(); - - foreach (var action in actionParameters) - { - actionParamList.Add(action.Convert()); - } - Dictionary parameters = new Dictionary() {{ - "actions", JsonConvert.SerializeObject(actionParamList) + "actions", JsonConvert.SerializeObject(actionParameters.Select(action => action.Convert())) }}; - Modify response = await Request("send", cancellationToken, parameters); - - return response.Status; + return (await Request("send", cancellationToken, parameters)).Status; } diff --git a/PocketSharp/PocketSharp.csproj b/PocketSharp/PocketSharp.csproj index 55682a9..f25936e 100644 --- a/PocketSharp/PocketSharp.csproj +++ b/PocketSharp/PocketSharp.csproj @@ -63,7 +63,6 @@ - diff --git a/PocketSharp/Utilities/JsonExtensions.cs b/PocketSharp/Utilities/JsonExtensions.cs index 6ceefac..03780fe 100644 --- a/PocketSharp/Utilities/JsonExtensions.cs +++ b/PocketSharp/Utilities/JsonExtensions.cs @@ -123,17 +123,17 @@ namespace PocketSharp - public class ObjectToArrayConverter : CustomCreationConverter> where T : new() + public class ObjectToArrayConverter : CustomCreationConverter> where T : new() { public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JObject jObject; - List result = new List(); - T target; + List results = new List(); + // object is an array if (reader.TokenType == JsonToken.StartArray) { - return serializer.Deserialize>(reader); + return serializer.Deserialize>(reader); } else if (reader.TokenType == JsonToken.Null) { @@ -152,11 +152,12 @@ namespace PocketSharp // Populate the object properties foreach (KeyValuePair item in jObject) { - target = serializer.Deserialize(item.Value.CreateReader()); - result.Add(target); + results.Add( + serializer.Deserialize(item.Value.CreateReader()) + ); } - return result; + return results; } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) @@ -164,11 +165,10 @@ namespace PocketSharp throw new NotImplementedException(); } - public override List Create(Type objectType) + public override IEnumerable Create(Type objectType) { return new List(); } - }