public void ProcessRequest(HttpContext context)
{
try
{
var tmFileStorage = TM_FileStorage.Current;
if (tmFileStorage.isNull())
{
context.Response.Write("TM_FileStorage is not set");
return;
}
var uploadTokenString = context.Request["uploadToken"];
if (uploadTokenString.isGuid().isFalse())
{
context.Response.Write("No Upload Token provided");
return;
}
var uploadToken = uploadTokenString.guid();
if (FileUpload.UploadTokens.contains(uploadToken).isFalse())
throw new SecurityException("Invalid Upload Token");
FileUpload.UploadTokens.remove(uploadToken);
var libraryName = context.Request["library"] ?? "";
var library = TM_Xml_Database.Current.tmLibrary(libraryName);
if (library.isNull())
{
context.Response.Write("Library not found");
return;
}
var pathToLibraryXmlFile = tmFileStorage.xmlDB_Path_Library_XmlFile(library);
var pathToGuidanceItemsFolder = tmFileStorage.xmlDB_Path_Library_RootFolder(library);
var targetDir = libraryName.tempDir();
var folderToZip = targetDir.pathCombine(libraryName).createDir();
var zipFile = "{0}.zip".format(libraryName).tempFile();
"Copying library files {0} into folder: {1}".info(libraryName, folderToZip);
Files.copyFolder(pathToGuidanceItemsFolder, folderToZip, true, true, ".git");
Files.copy(pathToLibraryXmlFile, folderToZip);
new ICSharpCode.SharpZipLib.Zip.FastZip().CreateZip(zipFile, targetDir, true, "");
context.Response.ContentType = "application/zip";
context.Response.AddHeader("content-disposition", "filename={0}.zip".format(libraryName));
context.Response.WriteFile(zipFile);
}
catch (Exception ex)
{
ex.log("in LibraryDownload");
context.Response.Write("There was an error downloading the library");
}
}