Exemple #1
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 <PostMessageResponse> PostMessage(string conversationId, PostMessageRequest postMessageRequest)
        {
            using (_logger.BeginScope("{MessageId}", postMessageRequest.Id))
            {
                PostMessageResponse message = new PostMessageResponse
                {
                    Id             = postMessageRequest.Id,
                    Text           = postMessageRequest.Text,
                    SenderUsername = postMessageRequest.SenderUsername,
                    UnixTime       = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
                };
                var stopWatch      = Stopwatch.StartNew();
                var fetchedMessage = await _messageStore.AddMessage(message, conversationId);

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

                _telemetryClient.TrackMetric("MessageStore.AddMessage.Time", stopWatch.ElapsedMilliseconds);
                _telemetryClient.TrackEvent("MessageAdded");
                return(fetchedMessage);
            }
        }