/// <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; }
/// <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); }
/// <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; }
/// <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); } }
/// <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; }