private void HandleGetRequest(HttpContext context, Func <IResult, IResult> resultWrapper)
        {
            var request  = new HttpRequestWrapper(context.Request);
            var response = new HttpResponseWrapper(context.Response);

            var absolutePath   = HttpUtility.UrlDecode(request.Url.AbsolutePath);
            var originalFormat = FormatInfoProvider.ResolveFromExtension(Path.GetExtension(absolutePath));

            if (originalFormat == null)
            {
                ServeIllegalExtensionResult(response);
                return;
            }

            IMediaTransformer mediaTransformer;
            var transformMedia = MediaTransformerFactory.TryCreateTransformer(request, originalFormat, FormatInfoProvider, out mediaTransformer);
            var outputFormat   = transformMedia ? mediaTransformer.OutputFormat : originalFormat;

            IResult result;

            if (TryGetResult(request, outputFormat, transformMedia, mediaTransformer, out result))
            {
                result = resultWrapper(result);
                ResultHandler.HandleResult(result, outputFormat, request, response);
                result.Dispose();
            }
            else
            {
                ServeNotFoundResult(response);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Run query and handle results with specified handler.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="q"></param>
        /// <param name="handler"></param>
        /// <returns></returns>
        public QueryResult <T> Query <T>(string q, Dictionary <string, string> conf, ResultHandler <T> handler)
        {
            var ret = this.Query(q, conf,
                                 (metadata) => handler.GetResult(metadata),
                                 (metadata, results, result) => handler.HandleResult(metadata, results, result)
                                 );

            return(ret);
        }