Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        /// <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);
            }
        }
Esempio n. 3
0
        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));
        }