/// <summary> /// Initializes a new instance of the <see cref="DownloadResult{T}"/> class. /// </summary> /// <param name="result">The result.</param> /// <param name="error">The error.</param> /// <param name="response">The server response data.</param> public DownloadResult(T result, HttpWebClientServiceException error, ResponseParams response = null) { Error = error; Result = result; Response = response ?? new ResponseParams(0); }
/// <summary> /// Creates a request parameter based on the data from the last request. /// </summary> /// <param name="response">The previous response.</param> /// <param name="content">The optional POST data to include, URL encoded.</param> public RequestParams(ResponseParams response, string content = null) : this(content) { if (response != null) { ETag = response.ETag; IfModifiedSince = response.Expires; } }
/// <summary> /// Helper method to return an object from the completed request stream. /// </summary> /// <param name="requestBaseUrl">The request base URL.</param> /// <param name="stream">The stream.</param> /// <param name="parser">The function which will parse the stream.</param> /// <param name="response">The response from the server.</param> /// <returns>The parsed object.</returns> private static DownloadResult <T> GetResult <T>(Uri requestBaseUrl, Stream stream, ParseDataDelegate <T> parser, HttpResponseMessage response) { T result = default(T); HttpWebClientServiceException error = null; var param = new ResponseParams(response); if (stream == null) { // No stream (can this happen)? error = HttpWebClientServiceException.Exception(requestBaseUrl, new ArgumentNullException(nameof(stream))); } else { // Attempt to invoke parser result = parser.Invoke(Util.ZlibUncompress(stream), param); } return(new DownloadResult <T>(result, error, param)); }
/// <summary> /// Gets the result. /// </summary> /// <param name="requestBaseUrl">The request base URL.</param> /// <param name="stream">The stream.</param> /// <param name="response">The response from the server.</param> /// <returns></returns> private static DownloadResult <Image> GetImage(Uri requestBaseUrl, Stream stream, HttpResponseMessage response) { Image image = null; HttpWebClientServiceException error = null; var param = new ResponseParams(response); if (stream == null) { error = HttpWebClientServiceException.Exception(requestBaseUrl, new ArgumentNullException(nameof(stream))); return(new DownloadResult <Image>(null, error, param)); } try { image = Image.FromStream(Util.ZlibUncompress(stream), true); } catch (ArgumentException ex) { error = HttpWebClientServiceException.ImageException(requestBaseUrl, ex); } return(new DownloadResult <Image>(image, error, param)); }
/// <summary> /// Helper method to return an Xml document from the completed request. /// </summary> /// <param name="requestBaseUrl">The request base URL.</param> /// <param name="stream">The stream.</param> /// <param name="response">The response from the server.</param> private static DownloadResult <IXPathNavigable> GetXmlDocument(Uri requestBaseUrl, Stream stream, HttpResponseMessage response) { XmlDocument xmlDoc = new XmlDocument(); HttpWebClientServiceException error = null; var param = new ResponseParams(response); if (stream == null) { error = HttpWebClientServiceException.Exception(requestBaseUrl, new ArgumentNullException(nameof(stream))); return(new DownloadResult <IXPathNavigable>(xmlDoc, error, param)); } try { xmlDoc.Load(Util.ZlibUncompress(stream)); } catch (XmlException ex) { error = HttpWebClientServiceException.XmlException(requestBaseUrl, ex); } return(new DownloadResult <IXPathNavigable>(xmlDoc, error, param)); }
/// <summary> /// Helper method to return a string from the completed request. /// </summary> /// <param name="requestBaseUrl">The request base URL.</param> /// <param name="stream">The stream.</param> /// <param name="response">The response from the server.</param> private static DownloadResult <string> GetString(Uri requestBaseUrl, Stream stream, HttpResponseMessage response) { string text = string.Empty; HttpWebClientServiceException error = null; var param = new ResponseParams(response); if (stream == null) { error = HttpWebClientServiceException.Exception(requestBaseUrl, new ArgumentNullException(nameof(stream))); return(new DownloadResult <string>(text, error, param)); } try { using (StreamReader reader = new StreamReader(Util.ZlibUncompress(stream))) text = reader.ReadToEnd(); } catch (ArgumentException ex) { error = HttpWebClientServiceException.Exception(requestBaseUrl, ex); } return(new DownloadResult <string>(text, error, param)); }