protected IContentSerializer GetSerializer(IRequest request, IContentSerializerFactory serializerFactory) { string serializerType = request.UrlBuilder.Query.Get(CommonParams.WT); if (serializerType == null && request.Header != null && request.Header.ContainsKey("content-type")) { serializerType = request.Header["content-type"]; } return(serializerFactory.GetContentSerializer(serializerType)); }
/// <summary> /// Transfers the Request to the Solr Server and returns it's Response. /// </summary> /// <typeparam name="T">IResponse type, which handles the response.</typeparam> /// <param name="request">IRequest implementation, which handles the required date for the Request.</param> /// <exception cref="MizoreConnectionExcpetion">Thrown when a problem with the Connection to the server occurs</exception> /// <returns>IResponse implementation for the Response</returns> public T Request <T>(IRequest request, IContentSerializerFactory serializerFactory) where T : IResponse { if (request == null) { throw new ArgumentNullException("request"); } if (serializerFactory == null) { throw new ArgumentNullException("serializerFactory"); } //if (request.Server.Cache != null) // ETag = request.Server.Cache.GetETag(request.CacheKey); try { var webRequest = CreateWebRequest(request, serializerFactory); var webResponse = webRequest.GetResponse(); Stream ms = null; using (var responseStream = webResponse.GetResponseStream()) { if (responseStream != null) { ms = new MemoryStream(); responseStream.CopyTo(ms); ms.Position = 0; } } var serializer = serializerFactory.GetContentSerializer(webResponse.ContentType); if (serializer == null) { throw new InvalidOperationException("No Matching ContentSerializer found for type " + webResponse.ContentType); } var nl = serializer.Deserialize(ms); return((T)request.GetResponse(nl)); } catch (WebException we) { //TODO: JIRA MIZORE-7: Http exceptionhandling //TODO: JIRA MIZORE-9: Cache handling //TODO-LOW: JIRA MIZORE-16: Solr errorpage parsing and own exception handling throw new MizoreConnectionException(request, "Connection exception occured in HttpWebRequestHandler.", we); } catch (Exception e) { //TODO: generic error handling throw new MizoreConnectionException(request, e); } }
public T Request <T>(IRequest request, IContentSerializerFactory serializerFactory) where T : IResponse { if (request == null) { throw new ArgumentNullException("request"); } if (request.UrlBuilder == null) { throw new ArgumentException("Request doesn't have a UrlBuilder", "request"); } var wt = request.UrlBuilder.Query.Get(CommonParams.WT); if (wt == null) { throw new ArgumentException("UrlBuilder doesn't have a WT set, it's required for testing!", "request"); } if (serializerFactory == null) { throw new ArgumentNullException("serializerFactory"); } var fileSuffix = GetSuffix(request); Stream ms = null; using (var responseStream = GetFileStream(request.UrlBuilder, fileSuffix)) { if (responseStream != null) { ms = new MemoryStream(); responseStream.CopyTo(ms); ms.Position = 0; } } var contentType = GetContentType(request.UrlBuilder); var serializer = serializerFactory.GetContentSerializer(contentType); if (serializer == null) { throw new InvalidOperationException("No Matching ContentSerializer found for type " + contentType); } var nl = serializer.Deserialize(ms); return((T)request.GetResponse(nl)); }