Example #1
0
        public async Task PostEmptyMessageException()
        {
            // We create the conversation or the dispose will throw not found
            var rand = Guid.NewGuid().ToString();

            string[] usernames = _conversationId.Split('_');
            var      addConversationRequestBody = new AddConversationRequestBody
            {
                Participants = new List <string> {
                    usernames[0], usernames[1]
                },
                FirstMessage = new Dictionary <string, string> {
                    { "Id", rand }, { "Text", "ae" }, { "SenderUsername", usernames[0] }
                }
            };
            await _chatServiceClient.AddConversation(addConversationRequestBody);

            _messagesToCleanup.Add(rand);


            var id = Guid.NewGuid().ToString();
            var addMessageRequestBody = new AddMessageRequestBody
            {
                Id             = id,
                SenderUsername = "******",
                Text           = "",
            };

            var exception = await Assert.ThrowsAsync <ChatServiceException>(
                () => _chatServiceClient.AddMessage(_conversationId, addMessageRequestBody));

            Assert.Equal(HttpStatusCode.BadRequest, exception.StatusCode);
        }
Example #2
0
        public async Task <Message> AddMessage(string conversationId, AddMessageRequestBody addMessageRequestBody)
        {
            using (_logger.BeginScope("{ConversationId}", conversationId))
            {
                var message = new Message
                {
                    Id             = addMessageRequestBody.Id,
                    SenderUsername = addMessageRequestBody.SenderUsername,
                    Text           = addMessageRequestBody.Text,
                    UnixTime       = DateTimeOffset.Now.ToUnixTimeMilliseconds()
                };
                ThrowBadRequestIfMessageInvalid(message);
                try
                {
                    var stopWatch = Stopwatch.StartNew();
                    await _messageStore.AddMessage(conversationId, message);

                    _telemetryClient.TrackMetric("MessageStore.AddMessage.Time", stopWatch.ElapsedMilliseconds);
                    _telemetryClient.TrackEvent("MessageCreated");
                }
                catch (MessageAlreadyExistsException e)
                {
                    message = await _messageStore.GetMessage(conversationId, message.Id);

                    return(message);
                }

                await _conversationStore.UpdateConversation(message.UnixTime, conversationId);

                return(message);
            }
        }
        public async Task AddMessage(string conversationId, AddMessageRequestBody addMessageRequestBody)
        {
            string json = JsonConvert.SerializeObject(addMessageRequestBody);
            HttpResponseMessage response = await _httpClient.PostAsync($"api/conversations/{conversationId}/messages", new StringContent(json, Encoding.UTF8,
                                                                                                                                         "application/json"));

            await EnsureSuccessOrThrow(response);
        }
Example #4
0
        private static Message AddMessageBodyToMessage(AddMessageRequestBody addMessageRequestBody)
        {
            var message = new Message
            {
                Id = addMessageRequestBody.Id, SenderUsername = addMessageRequestBody.SenderUsername, Text = addMessageRequestBody.Text, UnixTime = DateTimeOffset.Now.ToUnixTimeMilliseconds()
            };

            return(message);
        }
Example #5
0
        private static AddMessageRequestBody CreateRandomAddMessageBody()
        {
            var rand = Guid.NewGuid().ToString();
            var addMessageRequestBody = new AddMessageRequestBody
            {
                Id = rand, SenderUsername = "******", Text = "Hola"
            };

            return(addMessageRequestBody);
        }
        public async Task <IActionResult> AddMessage(string conversationId, [FromBody] AddMessageRequestBody addMessageRequestBody)
        {
            var message = await _messageService.AddMessage(conversationId, addMessageRequestBody);

            return(StatusCode(201, message));
        }