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