public API_ScriptCombiner CombineFiles()
{
if (baseFolder.dirExists().isFalse())
{
"[API_ScriptCombiner] baseFolder Not set".error();
return this;
}
using (var memoryStream = new MemoryStream(8092))
{
// Decide regular stream or gzip stream based on whether the response can be compressed or not
//using (Stream writer = isCompressed ? (Stream)(new GZipStream(memoryStream, CompressionMode.Compress)) : memoryStream)
using (Stream writer = isCompressed ? (Stream)(new ICSharpCode.SharpZipLib.GZip.GZipOutputStream(memoryStream)) : memoryStream)
{
// Read the files into one big string
allScripts = new StringBuilder();
filesProcessed = GetScriptFileNames(setName);
foreach (string fileName in filesProcessed)
{
var fullPath = baseFolder.pathCombine(fileName.trim());
if(fullPath.contains(baseFolder).isFalse())
"[API_ScriptCombiner][CombineFiles] resolved full path ('{0}') did not contain baseFolder ('{1}')".format(fullPath, baseFolder);
if (fullPath.fileExists())
{
allScripts.AppendLine("\n\n/********************************** ");
allScripts.AppendLine(" ***** " + fileName);
allScripts.AppendLine(" **********************************/\n\n");
allScripts.AppendLine(File.ReadAllText(fullPath));
}
}
var codeToSend = allScripts.ToString();
if (minifyCode)
{
// Minify the combined script files and remove comments and white spaces
var minifier = new JavaScriptMinifier();
minifiedCode = minifier.Minify(codeToSend);
codeToSend = minifiedCode;
}
// Send minfied string to output stream
byte[] bts = Encoding.UTF8.GetBytes(codeToSend);
writer.Write(bts, 0, bts.Length);
}
// Generate the response
CombinedBytes = memoryStream.ToArray();
}
return this;
}