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