private async Task<Stream> OpenResourceAsync(string fileName, bool embeddedResource, CancellationToken cancellationToken)
{
Stream stream = embeddedResource ? WebExtensions.OpenEmbeddedResourceStream(fileName) : File.OpenRead(fileName);
if (!(m_releaseMode || UseMinifyInDebug) || !(MinifyJavascript || MinifyStyleSheets))
return stream;
string extension = FilePath.GetExtension(fileName).Trim().ToLowerInvariant();
if (string.IsNullOrWhiteSpace(extension))
return stream;
Minifier minifier = new Minifier();
Stream minimizedStream = null;
switch (extension)
{
case ".js":
if (MinifyJavascript)
{
await Task.Run(async () =>
{
using (StreamReader reader = new StreamReader(stream))
minimizedStream = await minifier.MinifyJavaScript(await reader.ReadToEndAsync()).ToStreamAsync();
}, cancellationToken);
}
break;
case ".css":
if (MinifyStyleSheets)
{
await Task.Run(async () =>
{
using (StreamReader reader = new StreamReader(stream))
minimizedStream = await minifier.MinifyStyleSheet(await reader.ReadToEndAsync()).ToStreamAsync();
}, cancellationToken);
}
break;
}
return minimizedStream ?? stream;
}