/// <summary> /// A Get method to fetch the stream from the URI /// </summary> /// <typeparam name="TRequest">The Request Object to pass to</typeparam> /// <param name="httpMethod">HTTP Method</param> /// <param name="uri">The Source URL from where Stream can be downloaded</param> /// <param name="request">The input object which should be passed as part of request</param> /// <returns></returns> public Stream GetStream <TRequest>(HttpMethod httpMethod, string uri, TRequest request) where TRequest : class { HttpClient httpClient = EVHttpClient.GetHttpClient(); try { HttpResponseMessage httpResp; if (null == request) { httpResp = httpClient.Send(httpMethod, uri); } else { httpResp = httpClient.Send(httpMethod, uri, HttpContentExtensions.CreateXmlSerializable <TRequest>(request)); } if (!httpResp.IsStatusIsSuccessful()) { throw new EVException().AddHttpResponse(httpResp); } // -- get the xml return(httpResp.Content.ReadAsStream()); } catch (Exception exception) { CheckAndThrowWebException(exception); throw; } }
/// <summary> /// This is a generic Http send method which takes data from /// stub if needed else calls the service and returns the data /// back to the caller /// </summary> /// <typeparam name="TRequest">Request type</typeparam> /// <typeparam name="TResponse">Response type</typeparam> /// <param name="httpMethod">HttpMethod type</param> /// <param name="uri">Uri of stubbed filename/Rest web service</param> /// <param name="obj">Request type object</param> /// <returns>Response type object</returns> public TResponse SendUsingDataContract <TRequest, TResponse>(HttpMethod httpMethod, string uri, TRequest obj) { HttpResponseMessage httpResp = null; string xml = string.Empty; // -- try to get stub data xml = GetStubData(uri); if (string.IsNullOrEmpty(xml)) { httpResp = obj == null?EVHttpClient.GetHttpClient().Send(httpMethod, uri) : EVHttpClient.GetHttpClient().Send(httpMethod, uri, HttpContentExtensions.CreateDataContract <TRequest>(obj)); if (httpResp != null && !httpResp.IsStatusIsSuccessful()) { throw new EVException().AddHttpResponse(httpResp); } // -- get response data xml = GetResponseData(uri, httpResp); } return((TResponse)XmlUtility.DeserializeObject(xml, typeof(TResponse))); }
/// <summary> /// A Get method to fetch the stream from the URI /// </summary> /// <typeparam name="TRequest">The Request Object to pass to</typeparam> /// <param name="httpMethod">HTTP Method</param> /// <param name="uri">The Source URL from where Stream can be downloaded</param> /// <param name="obj">The input object which should be passed as part of request</param> /// <returns></returns> public Stream GetStream <TRequest>(HttpMethod httpMethod, string uri, TRequest obj) where TRequest : class { HttpResponseMessage httpResp = null; string xml = string.Empty; // -- try to get stub data xml = GetStubData(uri); if (string.IsNullOrEmpty(xml)) { httpResp = obj == null?EVHttpClient.GetHttpClient().Send(httpMethod, uri) : EVHttpClient.GetHttpClient().Send(httpMethod, uri, HttpContentExtensions.CreateXmlSerializable <TRequest>(obj)); if (!httpResp.IsStatusIsSuccessful()) { throw new EVException().AddHttpResponse(httpResp); } // -- get response data return(httpResp.Content.ReadAsStream()); } return(null); }