예제 #1
0
        /// <summary>
        /// Get all posts. This is rate-limited to once every 60 seconds and will return a 429 error if you exceed that
        /// </summary>
        /// <param name="Tags"></param>
        /// <param name="Start">Offset to start from - default is 0</param>
        /// <param name="Results">Number of posts to return - default is all</param>
        /// <param name="FromDate">Return only bookmarks created after this time</param>
        /// <param name="ToDate">Return only bookmarks created before this time</param>
        /// <param name="ChangedMeta">Include the "meta" attribute in the response</param>
        /// <returns>A list of Posts</returns>
        public async Task <IRestResponse <List <Post> > > GetAllPostsAsync(List <Tag> Tags = null, int?Start = null, int?Results = null, DateTime?FromDate = null, DateTime?ToDate = null, bool ChangedMeta = false)
        {
            RestRequest getPostsReq = new RestRequest("/posts/all");

            getPostsReq.RequestFormat = DataFormat.Json;

            if (Tags != null)
            {
                getPostsReq.AddParameter(ParameterHelpers.ValueToGetArgument("tag", Tags));
            }
            if (Start.HasValue)
            {
                getPostsReq.AddParameter("start", Start);
            }
            if (Results.HasValue)
            {
                getPostsReq.AddParameter("results", Results);
            }
            if (FromDate.HasValue)
            {
                getPostsReq.AddParameter("fromdt", FromDate);
            }
            if (ToDate.HasValue)
            {
                getPostsReq.AddParameter("todt", ToDate);
            }

            return(await ExecuteAsync <List <Post> >(getPostsReq));
        }
예제 #2
0
        public void TestValueToGet()
        {
            //var stringParam = ParameterHelpers.ValueToGetArgument("string", "string");
            var boolParam     = ParameterHelpers.ValueToGetArgument("didThisWork", true);
            var dateTimeParam = ParameterHelpers.ValueToGetArgument("letsParty", new DateTime(1999, 12, 31));
            var tags          = new List <Tag>();

            tags.Add(new Tag("something"));
            tags.Add(new Tag("else"));
            var tagParam = ParameterHelpers.ValueToGetArgument("tags", tags);

            Assert.AreEqual(boolParam.ToString(), "didThisWork=yes");
            Assert.AreEqual(dateTimeParam.ToString(), "letsParty=1999-12-31T00:00:00Z");
            Assert.AreEqual(tagParam.ToString(), "tags=something else");
        }
예제 #3
0
        /// <summary>
        /// Get posts - filtered by URL, tags or date
        /// </summary>
        /// <param name="Tags">A list of up to 3 tags</param>
        /// <param name="CreatedDate">Return posts created on this date</param>
        /// <param name="URL">Return the post with this URL</param>
        /// <param name="ChangedMeta">Include the "meta" attribute in the response</param>
        /// <returns>A list of Post objects</returns>
        public async Task <IRestResponse <List <Post> > > GetPostsAsync(List <Tag> Tags = null, DateTime?CreatedDate = null, string URL = null, bool ChangedMeta = false)
        {
            RestRequest GetPostsReq = new RestRequest("/posts/get");

            if (Tags != null)
            {
                GetPostsReq.AddParameter(ParameterHelpers.ValueToGetArgument("tags", Tags));
            }
            if (CreatedDate.HasValue)
            {
                GetPostsReq.AddParameter(ParameterHelpers.ValueToGetArgument("dt", CreatedDate.Value));
            }
            if (URL != null)
            {
                GetPostsReq.AddParameter("url", URL);
            }
            GetPostsReq.AddParameter(ParameterHelpers.ValueToGetArgument("meta", ChangedMeta));
            return(await ExecuteAsync <List <Post> >(GetPostsReq));
        }
예제 #4
0
        /// <summary>
        /// Adds a post based on the querystring we pass
        /// </summary>
        /// <param name="newPost">The post to add</param>
        /// <returns>PinboardResponse</returns>
        public async Task <IRestResponse <PinboardResponse> > AddPostAsync(Post newPost)
        {
            RestRequest AddPostRequest = new RestRequest("/posts/add");

            if (newPost.Href != null)
            {
                AddPostRequest.AddParameter("url", newPost.Href);
            }
            if (newPost.Description != null)
            {
                AddPostRequest.AddParameter("description", newPost.Description);
            }
            if (newPost.Extended != null)
            {
                AddPostRequest.AddParameter("extended", newPost.Extended);
            }
            if (newPost.Tag != null)
            {
                AddPostRequest.AddParameter(ParameterHelpers.ValueToGetArgument("tags", newPost.Tag));
            }
            if (newPost.CreationTime.HasValue)
            {
                AddPostRequest.AddParameter(ParameterHelpers.ValueToGetArgument("dt", newPost.CreationTime));
            }
            if (newPost.Replace != null)
            {
                AddPostRequest.AddParameter(ParameterHelpers.ValueToGetArgument("replace", newPost.Replace));
            }
            if (newPost.Shared != null)
            {
                AddPostRequest.AddParameter(ParameterHelpers.ValueToGetArgument("shared", newPost.Shared));
            }
            if (newPost.ToRead != null)
            {
                AddPostRequest.AddParameter(ParameterHelpers.ValueToGetArgument("toread", newPost.ToRead));
            }

            return(await ExecuteAsync <PinboardResponse>(AddPostRequest));
        }