public static MpnsTemplateBodyType DetectMpnsTemplateRegistationType()

in src/Microsoft.Azure.NotificationHubs/RegistrationSDKHelper.cs [184:226]


        public static MpnsTemplateBodyType DetectMpnsTemplateRegistationType(string body, string errorMsg)
        {
            XmlDocument xmlPayload = new XmlDocument();
            using (var reader = XmlTextReader.Create(new StringReader(body)))
            {
                try
                {
                    xmlPayload.Load(reader);
                }
                catch (XmlException)
                {
                    throw new ArgumentException(errorMsg);
                }

                XmlNode node = xmlPayload.FirstChild;
                while (node != null && node.NodeType != XmlNodeType.Element)
                {
                    node = node.NextSibling;
                }

                if (node == null)
                {
                    throw new ArgumentException(errorMsg);
                }

                // notification node
                if (!node.NamespaceURI.Equals(MpnsRegistrationDescription.NamespaceName, StringComparison.OrdinalIgnoreCase) ||
                    !node.LocalName.Equals(MpnsRegistrationDescription.NotificationElementName, StringComparison.OrdinalIgnoreCase))
                {
                    throw new ArgumentException(errorMsg);
                }

                // type node
                XmlNode typeNode = node.FirstChild;
                MpnsTemplateBodyType registrationType;
                if (typeNode == null || !Enum.TryParse(typeNode.LocalName, true, out registrationType))
                {
                    throw new ArgumentException(errorMsg);
                }

                return registrationType;
            }
        }