Esempio n. 1
0
        private static async Task HandleModifyPostAsync()
        {
            var post = AskUserToPickAPost(await HandleListAllPostsAsync());

            if (post is null)
            {
                return;
            }
            var newPost = AskUserToModifyPost(post);

            if (newPost is null)
            {
                return;
            }

            var postList = new List <Post> {
                post, newPost
            };
            var payload = ListPostsCommand.FromList(postList);

            var header = new Header
            {
                Command    = CommandType.ModifyPost,
                Type       = HeaderType.Request,
                DataLength = payload.Length
            };

            await EncodeHeaderAndSendAsync(header);
            await SendCommandDataAsync(payload);

            PrintServerBooleanResponse(await ReceiveServerResponseAsync());
        }
Esempio n. 2
0
        private static async Task <List <Post> > HandleListAllPostsAsync()
        {
            var requestHeader = new Header
            {
                Command    = CommandType.ListPosts,
                Type       = HeaderType.Request,
                DataLength = 0
            };

            await EncodeHeaderAndSendAsync(requestHeader);

            var response = await ReceiveServerResponseAsync();

            if (response != null)
            {
                return
                    (response.Header?.DataLength == 0
                        ? new List <Post>()
                        : ListPostsCommand.FromBytes(response.Data));
            }
            return(null);
        }
Esempio n. 3
0
        private static async Task <List <Post> > GetPostListByTopicAsync(Topic topic)
        {
            var requestData   = topic.Name.ToBytes();
            var requestHeader = new Header
            {
                Command    = CommandType.ListPostsByTopic,
                Type       = HeaderType.Request,
                DataLength = requestData.Length
            };

            await EncodeHeaderAndSendAsync(requestHeader);
            await SendCommandDataAsync(requestData);

            var response = await ReceiveServerResponseAsync();

            if (response.Header.DataLength == 0)
            {
                Console.WriteLine("There are no posts to display");
                return(new List <Post>());
            }

            return(ListPostsCommand.FromBytes(response.Data));
        }
Esempio n. 4
0
        private static async Task HandleRemovePostAsync()
        {
            var post = AskUserToPickAPost(await HandleListAllPostsAsync());

            if (post is null)
            {
                return;
            }

            var listToRemove = ListPostsCommand.FromList(new List <Post> {
                post
            });
            var header = new Header
            {
                Command    = CommandType.RemovePost,
                Type       = HeaderType.Request,
                DataLength = listToRemove.Length
            };

            await EncodeHeaderAndSendAsync(header);
            await SendCommandDataAsync(listToRemove);

            PrintServerBooleanResponse(await ReceiveServerResponseAsync());
        }