Example #1
0
        /// <summary>
        /// Parses a PostStreamGeneralParameters into the proper request parameters for App.net.
        /// </summary>
        /// <param name="postStreamGeneralParameters"></param>
        /// <returns></returns>
        public static IEnumerable<RequestParameter> GetGeneralParameters(PostStreamGeneralParameters postStreamGeneralParameters)
        {
            if(postStreamGeneralParameters == null)
                return null;

            var generalParameters = new List<RequestParameter>();

            if (!string.IsNullOrWhiteSpace(postStreamGeneralParameters.SinceId)) generalParameters.Add(new RequestParameter { Name = "since_id", Value = postStreamGeneralParameters.SinceId });
            if (!string.IsNullOrWhiteSpace(postStreamGeneralParameters.BeforeId)) generalParameters.Add(new RequestParameter { Name = "before_id", Value = postStreamGeneralParameters.BeforeId });
            if (postStreamGeneralParameters.Count.HasValue) generalParameters.Add(new RequestParameter { Name = "count", Value = postStreamGeneralParameters.Count });
            if (postStreamGeneralParameters.IncludeUser.HasValue) generalParameters.Add(new RequestParameter { Name = "include_user", Value = postStreamGeneralParameters.IncludeUser });
            if (postStreamGeneralParameters.IncludeAnnotations.HasValue) generalParameters.Add(new RequestParameter { Name = "include_annotations", Value = postStreamGeneralParameters.IncludeAnnotations });
            if (postStreamGeneralParameters.IncludeMachine.HasValue) generalParameters.Add(new RequestParameter { Name = "include_machine", Value = postStreamGeneralParameters.IncludeMachine });
            if (postStreamGeneralParameters.IncludeReplies.HasValue) generalParameters.Add(new RequestParameter { Name = "include_replies", Value = postStreamGeneralParameters.IncludeReplies });
            if (postStreamGeneralParameters.IncludeMuted.HasValue) generalParameters.Add(new RequestParameter { Name = "include_muted", Value = postStreamGeneralParameters.IncludeMuted });
            if (postStreamGeneralParameters.IncludeDeleted.HasValue) generalParameters.Add(new RequestParameter { Name = "include_deleted", Value = postStreamGeneralParameters.IncludeDeleted });
            if (postStreamGeneralParameters.IncludeDirectedPosts.HasValue) generalParameters.Add(new RequestParameter { Name = "include_directed_posts", Value = postStreamGeneralParameters.IncludeDirectedPosts });
            if (postStreamGeneralParameters.IncludeStarredBy.HasValue) generalParameters.Add(new RequestParameter { Name = "include_starred_by", Value = postStreamGeneralParameters.IncludeStarredBy });
            if (postStreamGeneralParameters.IncludeReposters.HasValue) generalParameters.Add(new RequestParameter { Name = "include_reposters", Value = postStreamGeneralParameters.IncludeReposters });

            return generalParameters.Count > 0 ? generalParameters : null;
        }
        public void RestSharpApiCallerCanCreatePostWithAnnotations()
        {
            //Setup
            var annotationValue = new MyAnnotationClass
                                      {
                                          Name = "My test parameter annotation"
                                          , Value = 23.5M
                                      };
            var annotation = new Annotation
                                 {
                                     Type = "net.raptorapp.test.request.parameter"
                                     , Value = annotationValue
                                 };

            var createPostRequest = new CreatePostRequest
            {
                Text = @"@jdscolam this is another #Rapptor #testpost, with links and stuff.  https://github.com/jdscolam/Rapptor and Rapptor NuGet"
                , ReplyTo = "197934"
                , Annotations = new List<Annotation> { annotation }
            };
            var postStreamGeneralParameters = new PostStreamGeneralParameters { IncludeAnnotations = 1 };
            IApiCaller restSharpApiCaller = new RestSharpApiCaller(ACCESS_TOKEN);

            //Execute
            var parameters = PostsService.GetGeneralParameters(postStreamGeneralParameters).ToArray();
            var postCreated = restSharpApiCaller.ApiPost<CreatePostRequest, Post>("posts/", null, createPostRequest);

            //Verify
            postCreated.Data.ShouldNotBeNull();
            postCreated.Data.Id.ShouldNotBeNull();

            postCreated = restSharpApiCaller.ApiGet<Post>("posts/" + postCreated.Data.Id + "/", null, requestParameters: parameters);

            postCreated.Data.Annotations.ShouldNotBeNull();
            postCreated.Data.Annotations.ShouldHaveCount(1);
            postCreated.Data.Annotations.First().Type.ShouldEqual(annotation.Type);

            var myAnnotationObjectValue = postCreated.Data.Annotations.First().Value as MyAnnotationClass;
            myAnnotationObjectValue.ShouldNotBeNull();
            // ReSharper disable PossibleNullReferenceException
            myAnnotationObjectValue.Name.ShouldEqual(annotationValue.Name);
            // ReSharper restore PossibleNullReferenceException
            myAnnotationObjectValue.Value.ShouldEqual(annotationValue.Value);

            //Teardown
        }
        public void RestSharpApiCallerCanGetEndpointWithFilterParameters()
        {
            //Setup
            const string postId = "197934";
            var postStreamGeneralParameters = new PostStreamGeneralParameters { SinceId = "199732" };
            IApiCaller restSharpApiCaller = new RestSharpApiCaller(ACCESS_TOKEN);
            var requestParameters = PostsService.GetGeneralParameters(postStreamGeneralParameters);

            //Execute
            var filteredPosts = restSharpApiCaller.ApiGet<List<Post>>("posts/" + postId + "/" + PostsService.REPLIES_ACTION, null, requestParameters.ToArray());

            //Verify
            filteredPosts.ShouldNotBeNull();

            foreach (var reply in filteredPosts.Data)
            {
                reply.Id.ShouldBeGreaterThan(postStreamGeneralParameters.SinceId);
                reply.ThreadId.ShouldEqual(postId);
            }

            //Teardown
        }
Example #4
0
        public void PostsServiceCanRetrieveRepliesToASpecificPostFilteredByPostStreamGeneralParameters()
        {
            //Setup
            const string postId = "1";
            var postStreamGeneralParameters = new PostStreamGeneralParameters { SinceId = "2"};
            var apiCaller = A.Fake<IApiCaller>();
            var postsService = new PostsService(apiCaller);
            A.CallTo(apiCaller).WithReturnType<ResponseEnvelope<List<Post>>>().Returns(new ResponseEnvelope<List<Post>>
                                                                                           {
                                                                                               Data = new List<Post>
                                                                                                          {
                                                                                                              new Post { Id = "3", ThreadId = "1" }
                                                                                                          }
                                                                                           });

            //Execute
            var postReplies = postsService.RetrievePostReplies(postId, postStreamGeneralParameters);

            //Verify
            postReplies.ShouldNotBeNull();

            foreach (var reply in postReplies.Data)
            {
                reply.Id.ShouldBeGreaterThan(postStreamGeneralParameters.SinceId);
                reply.ThreadId.ShouldEqual(postId);	//Here we are testing to make sure we are replying to the thread rather than the specific post.
            }

            //Teardown
        }
Example #5
0
        public void PostsServiceCanRetrievePostsWithAGivenHashtagFilteredByPostStreamGeneralParameters()
        {
            //Setup
            const string hashtag = "Test";
            var postStreamGeneralParameters = new PostStreamGeneralParameters { IncludeUser = 1 };
            var apiCaller = A.Fake<IApiCaller>();
            var postsService = new PostsService(apiCaller);
            A.CallTo(apiCaller).WithReturnType<ResponseEnvelope<List<Post>>>()
                .Returns(new ResponseEnvelope<List<Post>>
                {
                    Data = new List<Post>
                             {
                                 new Post
                                     {
                                         Text = "#" + hashtag
                                         , Entities = new Entities
                                                        {
                                                            Hashtags = new List<Hashtag>
                                                                           {
                                                                               new Hashtag
                                                                                   {
                                                                                       Name = hashtag
                                                                                       , Pos = 0
                                                                                   }
                                                                           }
                                                        }
                                            , User = new User()
                                     }
                             }
                });

            //Execute
            var posts = postsService.RetrieveTaggedPosts(hashtag, postStreamGeneralParameters);

            //Verify
            posts.ShouldNotBeNull();

            foreach (var post in posts.Data)
            {
                post.Text.ShouldContain(hashtag);
                post.Entities.ShouldNotBeNull();
                post.Entities.Hashtags.ShouldNotBeNull();
                post.Entities.Hashtags[0].Name.ShouldEqual(hashtag);
                post.User.ShouldNotBeNull();
            }

            //Teardown
        }
Example #6
0
        public void PostsServiceCanRetrievePostsMentioningASpecficUserFilteredByPostStreamGeneralParameters()
        {
            //Setup
            const string userId = "1";
            var postStreamGeneralParameters = new PostStreamGeneralParameters { Count = 1 };
            var apiCaller = A.Fake<IApiCaller>();
            var postsService = new PostsService(apiCaller);
            A.CallTo(apiCaller).WithReturnType<ResponseEnvelope<List<Post>>>()
                .Returns(new ResponseEnvelope<List<Post>>
                {
                    Data = new List<Post>
                             {
                                 new Post
                                     {
                                         Entities = new Entities
                                                        {
                                                            Mentions = new List<Mention>
                                                                           {
                                                                               new Mention { Id = "1" }
                                                                           }
                                                        }
                                     }
                             }
                });

            //Execute
            var posts = postsService.RetrievePostsMentioningUser(userId, postStreamGeneralParameters);

            //Verify
            posts.Data.ShouldNotBeNull();
            posts.Data.Count.ShouldEqual(postStreamGeneralParameters.Count);

            foreach (var post in posts.Data)
            {
                post.Entities.ShouldNotBeNull();
                post.Entities.Mentions.ShouldNotBeNull();
                post.Entities.Mentions.Count.ShouldBeGreaterThan(0);
                post.Entities.Mentions[0].Id.ShouldNotBeNull();
                post.Entities.Mentions[0].Id.ShouldEqual(userId);
            }

            //Teardown
        }
Example #7
0
        public void PostsServiceCanRetrievePostsCreatedByASpecificUserFilteredByPostStreamGeneralParameters()
        {
            //Setup
            const string userId = "1";
            var postStreamGeneralParameters = new PostStreamGeneralParameters { BeforeId = "10" };
            var apiCaller = A.Fake<IApiCaller>();
            var postsService = new PostsService(apiCaller);
            A.CallTo(apiCaller).WithReturnType<ResponseEnvelope<List<Post>>>().Returns(new ResponseEnvelope<List<Post>>
                                                                                           {
                                                                                               Data = new List<Post> { new Post { Id = "5", User = new User { Id = userId } } }
                                                                                           });

            //Execute
            var posts = postsService.RetrievePostsCreatedByUser(userId, postStreamGeneralParameters);

            //Verify
            posts.ShouldNotBeNull();

            foreach (var post in posts.Data)
            {
                post.User.ShouldNotBeNull();
                post.User.Id.ShouldNotBeNull();
                post.User.Id.ShouldEqual(userId);
                int.Parse(post.Id).ShouldBeLessThan(int.Parse(postStreamGeneralParameters.BeforeId));
            }

            //Teardown
        }
Example #8
0
        public void PostsServiceCanRetrieveGlobalStreamFilteredByPostStreamGeneralParameters()
        {
            //Setup
            var postStreamGeneralParameters = new PostStreamGeneralParameters { IncludeUser = 1 };
            var apiCaller = A.Fake<IApiCaller>();
            var postsService = new PostsService(apiCaller);
            A.CallTo(apiCaller).WithReturnType<ResponseEnvelope<List<Post>>>().Returns(new ResponseEnvelope<List<Post>>
                                                                                           {
                                                                                               Data = new List<Post> { new Post { User = new User() } }
                                                                                           });

            //Execute
            var posts = postsService.RetrieveGlobalStream(postStreamGeneralParameters);

            //Verify
            posts.Data.ShouldNotBeNull();
            posts.Data.ShouldHaveCount(1);
            posts.Data[0].User.ShouldNotBeNull();

            //Teardown
        }
Example #9
0
        /// <summary>
        /// Retrieves posts matching the given hashtag.
        /// 
        /// NOTE:  Unless changed by the postStreamGeneralParameters, only the latest 20 posts will be returned.
        /// </summary>
        /// <param name="hashtag">The hashtag to search without the # character.</param>
        /// <param name="postStreamGeneralParameters"></param>
        /// <returns></returns>
        public ResponseEnvelope<List<Post>> RetrieveTaggedPosts(string hashtag, PostStreamGeneralParameters postStreamGeneralParameters = null)
        {
            var taggedPostsCallString = POSTS_ENDPOINT + TAG_ENDPOINT + hashtag + "/";

            var generalParameters = GetGeneralParameters(postStreamGeneralParameters);

            var posts = generalParameters != null
                ? _apiCaller.ApiGet<List<Post>>(taggedPostsCallString, null, generalParameters.ToArray())
                : _apiCaller.ApiGet<List<Post>>(taggedPostsCallString, null);

            return posts;
        }
Example #10
0
        /// <summary>
        /// Retrieves a list of posts starred by a given userId.
        /// </summary>
        /// <param name="userId">May be a userId, Username, or "me" for the current user.</param>
        /// <param name="postStreamGeneralParameters"></param>
        /// <returns></returns>
        public ResponseEnvelope<List<Post>> RetrievePostsStarredByUser(string userId, PostStreamGeneralParameters postStreamGeneralParameters = null)
        {
            var userIdCallString = userId + "/" + STARS_ACTION;

            var generalParameters = GetGeneralParameters(postStreamGeneralParameters);

            var posts = generalParameters != null
                ? _apiCaller.ApiGet<List<Post>>(UsersService.USERS_ENDPOINT + userIdCallString, null, generalParameters.ToArray())
                : _apiCaller.ApiGet<List<Post>>(UsersService.USERS_ENDPOINT + userIdCallString, null);

            return posts;
        }
Example #11
0
        /// <summary>
        /// Retrieves a list of posts that have replied to the given postId.
        /// </summary>
        /// <param name="postId"></param>
        /// <param name="postStreamGeneralParameters"> </param>
        /// <returns></returns>
        public ResponseEnvelope<List<Post>> RetrievePostReplies(string postId, PostStreamGeneralParameters postStreamGeneralParameters = null)
        {
            var postIdCallString = postId + "/" + REPLIES_ACTION;

            var generalParameters = GetGeneralParameters(postStreamGeneralParameters);

            var posts = generalParameters != null
                ? _apiCaller.ApiGet<List<Post>>(POSTS_ENDPOINT + postIdCallString, null, generalParameters.ToArray())
                : _apiCaller.ApiGet<List<Post>>(POSTS_ENDPOINT + postIdCallString, null);

            return posts;
        }
Example #12
0
        /// <summary>
        /// Retrieves the global stream for the current AccessToken.
        /// 
        /// NOTE:  Unless changed by the postStreamGeneralParameters, only the latest 20 posts will be returned.
        /// </summary>
        /// <param name="postStreamGeneralParameters"></param>
        /// <returns></returns>
        public ResponseEnvelope<List<Post>> RetrieveGlobalStream(PostStreamGeneralParameters postStreamGeneralParameters = null)
        {
            const string globalStreamCallString = POSTS_ENDPOINT + STREAM_ENDPOINT + GLOBAL_ENDPOINT;

            var generalParameters = GetGeneralParameters(postStreamGeneralParameters);

            var posts = generalParameters != null
                ? _apiCaller.ApiGet<List<Post>>(globalStreamCallString, null, generalParameters.ToArray())
                : _apiCaller.ApiGet<List<Post>>(globalStreamCallString, null);

            return posts;
        }