static void ReadAllowFromElement (XmlReader reader, AccessPolicy policy) { if (IsNonEmptyElement (reader)) { reader.Skip (); return; } bool valid = true; string headers = null; string methods = null; // new in SL3 if (reader.HasAttributes) { int n = reader.AttributeCount; headers = reader.GetAttribute ("http-request-headers"); if (headers != null) n--; methods = reader.GetAttribute ("http-methods"); if (methods != null) n--; valid = (n == 0); } var v = new AllowFrom (); v.HttpRequestHeaders.SetHeaders (headers); v.AllowAnyMethod = (methods == "*"); // only legal value defined, otherwise restricted to GET and POST reader.ReadStartElement ("allow-from", String.Empty); for (reader.MoveToContent (); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent ()) { if (IsNonElement (reader) || !String.IsNullOrEmpty (reader.NamespaceURI)) { reader.Skip (); continue; } switch (reader.LocalName) { case "domain": var d = reader.GetAttribute ("uri"); if (d == "*") v.AllowAnyDomain = true; else v.Domains.Add (d); reader.Skip (); break; default: valid = false; reader.Skip (); continue; } } if (valid) policy.AllowedServices.Add (v); reader.ReadEndElement (); }
static void ReadAllowFromElement(XmlReader reader, AccessPolicy policy) { if (IsNonEmptyElement(reader)) { reader.Skip(); return; } bool valid = true; string headers = null; string methods = null; // new in SL3 if (reader.HasAttributes) { int n = reader.AttributeCount; headers = reader.GetAttribute("http-request-headers"); if (headers != null) { n--; } methods = reader.GetAttribute("http-methods"); if (methods != null) { n--; } valid = (n == 0); } var v = new AllowFrom(); v.HttpRequestHeaders.SetHeaders(headers); v.AllowAnyMethod = (methods == "*"); // only legal value defined, otherwise restricted to GET and POST reader.ReadStartElement("allow-from", String.Empty); for (reader.MoveToContent(); reader.NodeType != XmlNodeType.EndElement; reader.MoveToContent()) { if (IsNonElement(reader) || !String.IsNullOrEmpty(reader.NamespaceURI)) { reader.Skip(); continue; } switch (reader.LocalName) { case "domain": var d = reader.GetAttribute("uri"); if (d == "*") { v.AllowAnyDomain = true; } else { v.Domains.Add(d); } reader.Skip(); break; default: valid = false; reader.Skip(); continue; } } if (valid) { policy.AllowedServices.Add(v); } reader.ReadEndElement(); }