Example #1
0
        /// <summary>
        /// Post a message to an existing stream.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <returns>The posted message.</returns>
        public Message PostMessage(Message message)
        {
            var streamId = message.StreamId;

            _log?.LogDebug("Posting message to {streamId}", streamId);
            var attachments = new List <AttachmentInfo>();

            foreach (var attachment in message.Attachments)
            {
                attachments.Add(new AttachmentInfo(attachment.Id, attachment.Name, attachment.Size));
            }
            var       v2MessageSubmission = new V2MessageSubmission(V2MessageSubmission.FormatEnum.MESSAGEML, message.Body, attachments);
            V2Message v2Message;

            if (_authTokens.KeyManagerToken == null)
            {
                // Use the endpoint that works with OBO authentication.
                v2Message = _apiExecutor.Execute(_messagesApi.V3StreamSidMessageCreatePost, message.StreamId, _authTokens.SessionToken, v2MessageSubmission, _authTokens.KeyManagerToken);
            }
            else
            {
                v2Message = _apiExecutor.Execute(_messagesApi.V2StreamSidMessageCreatePost, message.StreamId, _authTokens.SessionToken, _authTokens.KeyManagerToken, v2MessageSubmission);
            }
            return(MessageFactory.Create(v2Message));
        }
Example #2
0
        public void EnsurePostMessage_uses_retry_strategy()
        {
            const string sid     = "sid";
            var          message = new V2MessageSubmission();

            _messagesApi.PostMessage(sid, message);
            _apiExecutorMock.Verify(obj => obj.Execute(It.IsAny <Func <string, string, string, V2MessageSubmission, V2Message> >(), sid, "sessionToken", "keyManagerToken", message));
        }
Example #3
0
 /// <summary>
 /// Post a message to an existing stream.
 /// </summary>
 /// <param name="sid">Stream ID.</param>
 /// <param name="message">The message.</param>
 /// <returns>The posted message.</returns>
 public V2Message PostMessage(string sid, V2MessageSubmission message)
 {
     TraceSource.TraceEvent(TraceEventType.Verbose, 0, "Posting message to stream \"{0}\"", sid);
     if (_authTokens.KeyManagerToken == null)
     {
         // Use the endpoint that works with OBO authentication.
         return(_apiExecutor.Execute(_messagesApi.V3StreamSidMessageCreatePost, sid, _authTokens.SessionToken, message, _authTokens.KeyManagerToken));
     }
     else
     {
         return(_apiExecutor.Execute(_messagesApi.V2StreamSidMessageCreatePost, sid, _authTokens.SessionToken, _authTokens.KeyManagerToken, message));
     }
 }
Example #4
0
        /// <summary>
        /// Post a message to an existing stream.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <returns>The posted message.</returns>
        public Message PostMessage(Message message)
        {
            var streamId = message.StreamId;

            _log?.LogDebug("Posting message to stream {streamId}", streamId);
            var attachments = new System.Collections.ObjectModel.ObservableCollection <AttachmentInfo>();

            foreach (var attachment in message.Attachments)
            {
                attachments.Add(new AttachmentInfo()
                {
                    Id = attachment.Id, Name = attachment.Name, Size = attachment.Size
                });
            }
            var v2MessageSubmission = new V2MessageSubmission()
            {
                Format = V2MessageSubmissionFormat.MESSAGEML, Message = message.Body, Attachments = attachments
            };

            try
            {
                V2Message v2Message;
                if (_authTokens.KeyManagerToken == null)
                {
                    // Use the endpoint that works with OBO authentication.
                    v2Message = _apiExecutor.Execute(_streamClient.V3MessageCreateAsync, message.StreamId, _authTokens.SessionToken, v2MessageSubmission, _authTokens.KeyManagerToken);
                }
                else
                {
                    v2Message = _apiExecutor.Execute(_streamClient.V2MessageCreateAsync, message.StreamId, _authTokens.SessionToken, _authTokens.KeyManagerToken, v2MessageSubmission);
                }
                return(MessageFactory.Create(v2Message));
            }
            catch (Exception e)
            {
                _log?.LogError(0, e, "An error has occured while trying to post a message to stream {streamId}", streamId);
                throw;
            }
        }