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