Пример #1
0
 /// <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);
 }
Пример #2
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));
        }
Пример #4
0
        /// <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));
        }
Пример #5
0
        /// <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));
        }
Пример #6
0
        /// <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));
        }