Esempio n. 1
0
        /// <summary>
        /// Deserializes the <see cref="WebResponse"/> into a <see cref="IOResponse"/>.
        /// </summary>
        /// <param name="webResponse"></param>
        /// <param name="request"></param>
        /// <returns></returns>
        protected virtual IOResponse ReadResponse(WebResponse webResponse, IORequest request)
        {
            Contract.Requires<ArgumentNullException>(webResponse != null);
            Contract.Requires<ArgumentNullException>(request != null);

            // generate new response
            var response = new IOResponse(
                request,
                ReadResponseStatus(webResponse),
                webResponse.GetResponseStream(),
                webResponse.ContentType);

            // populate headers
            foreach (var name in webResponse.Headers.AllKeys)
                response.Headers[name] = webResponse.Headers[name];

            return response;
        }
Esempio n. 2
0
        /// <summary>
        /// Deserializes the <see cref="WebResponse"/> into a <see cref="IOResponse"/>.
        /// </summary>
        /// <param name="webResponse"></param>
        /// <param name="request"></param>
        /// <returns></returns>
        protected virtual IOResponse ReadResponse(WebResponse webResponse, IORequest request)
        {
            Contract.Requires <ArgumentNullException>(webResponse != null);
            Contract.Requires <ArgumentNullException>(request != null);

            // generate new response
            var response = new IOResponse(
                request,
                ReadResponseStatus(webResponse),
                webResponse.GetResponseStream(),
                webResponse.ContentType);

            // populate headers
            foreach (var name in webResponse.Headers.AllKeys)
            {
                response.Headers[name] = webResponse.Headers[name];
            }

            return(response);
        }
Esempio n. 3
0
        /// <summary>
        /// Gets the <see cref="ModelResponseStatus"/> for the response.
        /// </summary>
        /// <param name="response"></param>
        /// <returns></returns>
        protected virtual ModelResponseStatus ReadRequestStatus(IOResponse response)
        {
            Contract.Requires<ArgumentNullException>(response != null);

            return response.Status == IOStatus.Success ? ModelResponseStatus.Success : ModelResponseStatus.Error;
        }
Esempio n. 4
0
        /// <summary>
        /// Extracts an <see cref="ModelResponse"/> from the given <see cref="IOResponse"/> content.
        /// </summary>
        /// <param name="ioResponse"></param>
        /// <param name="request"></param>
        /// <returns></returns>
        ModelResponse ReadIOResponseFromContent(IOResponse ioResponse, ModelRequest request)
        {
            Contract.Requires<ArgumentNullException>(ioResponse != null);
            Contract.Requires<ArgumentNullException>(request != null);

            // deserialize if possible
            if (ioResponse.Content != null &&
                ioResponse.ContentType != null)
            {
                // obtain serializer
                var deserializer = GetDeserializer(ioResponse.ContentType);
                if (deserializer == null)
                    throw new UnsupportedMediaTypeException();

                // generate new response
                return new ModelResponse(
                    request,
                    ReadRequestStatus(ioResponse),
                    deserializer.Deserialize(
                        new StreamReader(ioResponse.Content),
                        ioResponse.ContentType));
            }
            else
            {
                return new ModelResponse(
                    request,
                    ReadRequestStatus(ioResponse),
                    null);
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Deserializes the <see cref="WebResponse"/> into a <see cref="ModelResponse"/>.
        /// </summary>
        /// <param name="ioResponse"></param>
        /// <param name="request"></param>
        /// <returns></returns>
        protected virtual ModelResponse ReadIOResponse(IOResponse ioResponse, ModelRequest request)
        {
            Contract.Requires<ArgumentNullException>(ioResponse != null);
            Contract.Requires<ArgumentNullException>(request != null);

            var response = ReadIOResponseFromContent(ioResponse, request);
            response.Headers.Add(ioResponse.Headers);
            return response;
        }