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