Esempio n. 1
0
        private static object DeserializeRequest20(string templateXml, string contentXml)
        {
            var template = new XRoadXmlTemplate(templateXml, typeof(IService).GetTypeInfo().GetMethod("Service1"));

            return(DeserializeRequest(templateXml, contentXml, Globals.ServiceManager20, "Service1", (msgr, xmlr) =>
            {
                var message = Globals.ServiceManager20.CreateMessage();
                message.XmlTemplate = template;

                using (message)
                {
                    msgr.Read(message);
                    messageFormatter.MoveToPayload(xmlr, XName.Get("Service1", Globals.ServiceManager20.ProducerNamespace));
                    return serviceMap20.DeserializeRequest(xmlr, message);
                }
            }));
        }
Esempio n. 2
0
        /// <summary>
        /// Deserializes X-Road fault from message which is known to contain fault.
        /// </summary>
        public static IXRoadFault DeserializeXRoadFault(this IServiceMap serviceMap, XRoadMessage message, IMessageFormatter messageFormatter)
        {
            message.ContentStream.Position = 0;
            using (var reader = XmlReader.Create(message.ContentStream))
            {
                messageFormatter.MoveToPayload(reader, message.RootElementName);

                var responseName = serviceMap.ResponseDefinition.Content.Name;
                if (!reader.MoveToElement(3, responseName))
                {
                    throw new InvalidQueryException($"X-Road fault should be wrapped inside `{responseName}` element.");
                }

                return(reader.ReadXRoadFault(4));
            }
        }