From 2e705edc809d389e08f0987f54b55f4a4c7543ec Mon Sep 17 00:00:00 2001 From: ceee Date: Thu, 20 Jun 2013 00:24:43 +0200 Subject: [PATCH] update list of retrieve methods; --- PocketSharp.Console/Program.cs | 13 ++- PocketSharp/Components/Retrieve.cs | 95 ++++++++++++++++--- .../Models/Parameters/RetrieveParameters.cs | 33 +++++-- PocketSharp/Models/PocketItem.cs | 2 +- PocketSharp/Models/Retrieve.cs | 2 +- PocketSharp/PocketClient.cs | 21 +++- 6 files changed, 138 insertions(+), 28 deletions(-) diff --git a/PocketSharp.Console/Program.cs b/PocketSharp.Console/Program.cs index 048372d..bd92984 100644 --- a/PocketSharp.Console/Program.cs +++ b/PocketSharp.Console/Program.cs @@ -2,6 +2,8 @@ using PocketSharp; using PocketSharp.Models.Authentification; using PocketSharp.Models.Parameters; +using PocketSharp.Models; +using System.Collections.Generic; namespace PocketSharp.Console { @@ -15,13 +17,16 @@ namespace PocketSharp.Console // this apiKey is just for demonstration purposes // please create your own application and retrieve it's key. It's a 1-step process ;-) PocketClient client = new PocketClient( - consumerKey: "15396-f6f92101d72c8e270a6c9bb3" + consumerKey: "15396-f6f92101d72c8e270a6c9bb3", + accessCode: "a85134a7-243c-6656-ab82-97c901" ); - client.Retrieve(new RetrieveParameters() + List x = client.Retrieve(RetrieveFilter.Archive); + + foreach(PocketItem item in x) { - - }); + System.Console.WriteLine(">>> " + item.Title); + } System.Console.ReadKey(); } diff --git a/PocketSharp/Components/Retrieve.cs b/PocketSharp/Components/Retrieve.cs index 1d5fe53..1d250c1 100644 --- a/PocketSharp/Components/Retrieve.cs +++ b/PocketSharp/Components/Retrieve.cs @@ -10,24 +10,93 @@ namespace PocketSharp { public partial class PocketClient { - public bool Retrieve(RetrieveParameters para) + /// + /// Retrieves all items from pocket + /// + /// parameters, which are mapped to the officials from http://getpocket.com/developer/docs/v3/retrieve + /// + public List Retrieve(RetrieveParameters parameters) { - //var parameters = new List() - //{ - // new Parameter { Name = "favorite", Value = "1", Type = ParameterType.GetOrPost } - //}; + return GetResource("get", parameters.Convert()).Items; + } - //var parameters = new RetrieveParameters() - //{ - // Favorite = true, - // State = StateEnum.all - //}; - var paramss = para.Convert(); + /// + /// Retrieves all items with a filter from pocket + /// + /// The filter. + /// + public List Retrieve(RetrieveFilter filter = RetrieveFilter.All) + { + RetrieveParameters parameters = new RetrieveParameters(); - Retrieve result = GetResource("get", para.Convert()); + switch(filter) + { + case RetrieveFilter.Article: + parameters.ContentType = ContentTypeEnum.article; + break; + case RetrieveFilter.Image: + parameters.ContentType = ContentTypeEnum.image; + break; + case RetrieveFilter.Video: + parameters.ContentType = ContentTypeEnum.video; + break; + case RetrieveFilter.Favorite: + parameters.Favorite = true; + break; + case RetrieveFilter.Unread: + parameters.State = StateEnum.unread; + break; + case RetrieveFilter.Archive: + parameters.State = StateEnum.archive; + break; + } - return true; + return GetResource("get", parameters.Convert()).Items; + } + + + /// + /// Retrieves items by tag from pocket + /// + /// The tag. + /// + public List SearchByTag(string tag) + { + RetrieveParameters parameters = new RetrieveParameters() + { + Tag = tag + }; + return GetResource("get", parameters.Convert()).Items; + } + + + /// + /// Retrieves items from pocket which match the specified search string in title or content + /// + /// The tag. + /// + public List Search(string searchString) + { + RetrieveParameters parameters = new RetrieveParameters() + { + Search = searchString + }; + return GetResource("get", parameters.Convert()).Items; } } + + /// + /// Filter for simple retrieve requests + /// + public enum RetrieveFilter + { + All, + Unread, + Archive, + Favorite, + Article, + Video, + Image + } } diff --git a/PocketSharp/Models/Parameters/RetrieveParameters.cs b/PocketSharp/Models/Parameters/RetrieveParameters.cs index 2183625..7378319 100644 --- a/PocketSharp/Models/Parameters/RetrieveParameters.cs +++ b/PocketSharp/Models/Parameters/RetrieveParameters.cs @@ -1,6 +1,7 @@ using RestSharp; using System; using System.Collections.Generic; +using System.Reflection; using System.Runtime.Serialization; namespace PocketSharp.Models.Parameters @@ -17,19 +18,33 @@ namespace PocketSharp.Models.Parameters public SortEnum? Sort { get; set; } + public DetailTypeEnum? DetailType { get; set; } + + public string Search { get; set; } + + public string Domain { get; set; } + public List Convert() { List parameters = new List(); - if(State != null) - { + if (State != null) parameters.Add(CreateParam("state", State.ToString())); - } - if(Favorite != null) - { + if (Favorite != null) parameters.Add(CreateParam("favorite", (bool)Favorite ? "1" : "0")); - } + if (Tag != null) + parameters.Add(CreateParam("tag", Tag)); + if (ContentType != null) + parameters.Add(CreateParam("contentType", ContentType.ToString())); + if (Sort != null) + parameters.Add(CreateParam("sort", Sort.ToString())); + if (DetailType != null) + parameters.Add(CreateParam("detailType", DetailType.ToString())); + if (Search != null) + parameters.Add(CreateParam("search", Search.ToString())); + if (Domain != null) + parameters.Add(CreateParam("domain", Domain.ToString())); return parameters; } @@ -57,4 +72,10 @@ namespace PocketSharp.Models.Parameters video, image } + + public enum DetailTypeEnum + { + simple, + complete + } } diff --git a/PocketSharp/Models/PocketItem.cs b/PocketSharp/Models/PocketItem.cs index 1d70d28..c4e7853 100644 --- a/PocketSharp/Models/PocketItem.cs +++ b/PocketSharp/Models/PocketItem.cs @@ -4,7 +4,7 @@ using System.Runtime.Serialization; namespace PocketSharp.Models { [DataContract] - class PocketItem + public class PocketItem { [DataMember(Name = "item_id")] public int ID { get; set; } diff --git a/PocketSharp/Models/Retrieve.cs b/PocketSharp/Models/Retrieve.cs index 8966042..4d0a088 100644 --- a/PocketSharp/Models/Retrieve.cs +++ b/PocketSharp/Models/Retrieve.cs @@ -8,7 +8,7 @@ namespace PocketSharp.Models class Retrieve : ResponseBase { [DataMember(Name = "complete")] - public int Complete; + public int Complete { get; set; } [DataMember] public int Since { get; set; } diff --git a/PocketSharp/PocketClient.cs b/PocketSharp/PocketClient.cs index d8d1a23..f23ce02 100644 --- a/PocketSharp/PocketClient.cs +++ b/PocketSharp/PocketClient.cs @@ -21,13 +21,13 @@ namespace PocketSharp /// /// base URL for the API /// - public Uri BaseUrl { get; set; } + protected Uri BaseUrl { get; set; } /// /// Accessor for the Pocket API key /// see: http://getpocket.com/developer /// - public string ConsumerKey { get; set; } + protected string ConsumerKey { get; set; } /// /// Returns all associated data from the last request @@ -42,7 +42,7 @@ namespace PocketSharp /// /// Code retrieved on authentification-success /// - public string AccessCode { get; set; } + protected string AccessCode { get; set; } /// @@ -89,6 +89,21 @@ namespace PocketSharp } + /// + /// Gets the configuration from the PocketClient. + /// + /// + public Dictionary GetConfiguration() + { + return new Dictionary() + { + { "baseUrl", BaseUrl }, + { "consumerKey", ConsumerKey }, + { "accessCode", AccessCode } + }; + } + + /// /// Makes a HTTP REST request to the API ///