Beispiel #1
0
        private static TResponse ReadContent <TResponse>(
            IWebClientSerializerFactory webClientSerializerFactory,
            WebResponse response,
            Stream responseStream)
        {
            var webClientSerializer = webClientSerializerFactory.GetSerializer(response.ContentType.Split(';')[0]);

            using (var sr = new StreamReader(responseStream))
            {
                string s = sr.ReadToEnd();
                return(string.IsNullOrEmpty(s)
                                        ? default(TResponse)
                                        : webClientSerializer.Deserialize <TResponse>(s));
            }
        }
Beispiel #2
0
        private static RestReaderResponse <T> GetResponse <T>(IWebClientSerializerFactory webClientSerializerFactory, WebRequest request)
        {
            try
            {
                using (var response = request.GetResponse())
                {
                    var httpWebResponse = response as HttpWebResponse;
                    var responseStatus  = httpWebResponse != null
                                                ? httpWebResponse.StatusCode
                                                : 0;

                    if (response.ContentLength == 0)
                    {
                        return(new RestReaderResponse <T>(response.ResponseUri, responseStatus, default(T)));
                    }

                    var responseStream = response.GetResponseStream();
                    if (responseStream == null)
                    {
                        return(new RestReaderResponse <T>(response.ResponseUri, responseStatus, default(T)));
                    }

                    return(new RestReaderResponse <T>(response.ResponseUri, responseStatus, ReadContent <T>(webClientSerializerFactory, response, responseStream)));
                }
            }
            catch (WebException webException)
            {
                if (webException.Response == null)
                {
                    throw;
                }

                var restReaderException = new RestReaderException(webException.Message, webException);

                var httpWebResponse = webException.Response as HttpWebResponse;
                if (httpWebResponse != null)
                {
                    restReaderException.StatusCode        = httpWebResponse.StatusCode;
                    restReaderException.StatusDescription = httpWebResponse.StatusDescription;
                }

                throw restReaderException;
            }
        }
Beispiel #3
0
        public static RestReaderResponse <T> Request <T>(IWebClientSerializerFactory webClientSerializerFactory, string uri, RequestPreparer requestPreparer)
        {
            var request = requestPreparer.PrepareRequest(uri);

            return(GetResponse <T>(webClientSerializerFactory, request));
        }
Beispiel #4
0
 public RestReader(IWebClientSerializerFactory webClientSerializerFactory)
 {
     this.webClientSerializerFactory = webClientSerializerFactory;
 }