コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }