TeamMentor.CoreLib.LibraryDownload.ProcessRequest C# (CSharp) Method

ProcessRequest() public method

public ProcessRequest ( HttpContext context ) : void
context System.Web.HttpContext
return void
        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");
            }
        }
LibraryDownload