public static void Serialize(Stream s, XrdsDocument document) { Condition.Requires(s, "s").IsNotNull(); Condition.Requires(document, "document").IsNotNull(); lock (XrdsDocumentSerializer) { XrdsDocumentSerializer.Serialize(s, document); } }
public static XrdsDocument Deserialize(Stream s) { Condition.Requires(s, "s").IsNotNull(); lock (XrdsDocumentSerializer) { XrdsDocument document = (XrdsDocument)XrdsDocumentSerializer.Deserialize(s); return(document); } }
private XrdsDocument GetYadisDocument(Uri url) { Trace += string.Format("Lookup URL {0}. ", url); // GET directly from URL HttpWebRequest request; try { request = (HttpWebRequest)HttpWebRequest.Create(url); } catch (Exception ex) { throw new YadisRequestFailedException(string.Format("Unable to build Yadis request. Got '{0}'. Tried: {1}.", ex.Message, Trace)); } try { using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { if (response.Headers["X-XRDS-Location"] != null) { Trace += string.Format("Got X-XRDS-Location header {0}. ", response.Headers["X-XRDS-Location"]); Uri location; try { location = new Uri(response.Headers["X-XRDS-Location"]); } catch (Exception ex) { throw new YadisRequestFailedException(string.Format("Unable to discover Yadis URL {0}. Got '{1}'. Tried: {2}.", Url, ex.Message, Trace)); } return(GetYadisDocument(location)); } else if (response.ContentType.StartsWith("application/xrds+xml")) { Trace += string.Format("Found Yadis document at {0}. ", url); DiscoveredUrl = url; try { using (Stream s = response.GetResponseStream()) { return(XrdsDocument.Deserialize(s)); } } catch (Exception ex) { throw new YadisRequestFailedException(string.Format("Unable to deserialize Yadis document. Got '{0}'. Tried: {1}.", ex.Message, Trace)); } } else { Trace += string.Format("No X-XRDS-Location header or Yadis document found."); throw new YadisRequestFailedException(string.Format("Unable to discover Yadis URL {0}. Tried: {1}.", Url, Trace)); } } } catch (WebException ex) { throw new YadisRequestFailedException(string.Format("Unable to get Yadis response. Got '{0}'. Tried: {1}.", ex.Message, Trace)); } }