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()); }
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); }
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)); }
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()); }