private async Task <NotifyMessageEnvelope> CreateMinderNotifyMessageEnvelope( AS4Message as4Message, Type receivedEntityMessageType) { UserMessage userMessage = as4Message.FirstUserMessage; SignalMessage signalMessage = as4Message.FirstSignalMessage; if (userMessage == null && signalMessage != null) { userMessage = await RetrieveRelatedUserMessage(signalMessage); } if (userMessage == null) { Logger.Warn("The related usermessage for the received signalmessage could not be found"); userMessage = new UserMessage(IdentifierFactory.Instance.Create()); } UserMessage minderUserMessage = CreateUserMessageFromMinderProperties(userMessage, signalMessage); NotifyMessage notifyMessage = AS4MessageToNotifyMessageMapper.Convert( as4Message.FirstSignalMessage, receivedEntityMessageType, as4Message.EnvelopeDocument ?? AS4XmlSerializer.ToSoapEnvelopeDocument(as4Message)); // The NotifyMessage that Minder expects, is an AS4Message which contains the specific UserMessage. var msg = AS4Message.Create(minderUserMessage, new SendingProcessingMode()); var serializer = SerializerProvider.Default.Get(msg.ContentType); byte[] content; using (var memoryStream = new MemoryStream()) { serializer.Serialize(msg, memoryStream); content = memoryStream.ToArray(); } return(new NotifyMessageEnvelope(notifyMessage.MessageInfo, notifyMessage.StatusInfo.Status, content, msg.ContentType, receivedEntityMessageType)); }
protected virtual async Task <NotifyMessageEnvelope> CreateNotifyMessageEnvelopeAsync( AS4Message as4Message, string receivedEntityMessageId, Type receivedEntityType) { SignalMessage tobeNotifiedSignal = as4Message.SignalMessages.FirstOrDefault(s => s.MessageId == receivedEntityMessageId); NotifyMessage notifyMessage = AS4MessageToNotifyMessageMapper.Convert( tobeNotifiedSignal, receivedEntityType, as4Message.EnvelopeDocument ?? AS4XmlSerializer.ToSoapEnvelopeDocument(as4Message)); var serialized = await AS4XmlSerializer.ToStringAsync(notifyMessage).ConfigureAwait(false); return(new NotifyMessageEnvelope( notifyMessage.MessageInfo, notifyMessage.StatusInfo.Status, System.Text.Encoding.UTF8.GetBytes(serialized), "application/xml", receivedEntityType)); }