/// <summary> /// Archive a Directory. /// Assumes the Directory is fully populated with Files, Workspaces, and child Directories /// </summary> public async Task <ArchiveResult> ArchiveDirectory(Directory directory, ArchiveType type, bool includeIds) { var stream = new System.IO.MemoryStream(); using (ArchiveOutputStream archiveStream = ArchiveOutputStream.Create(stream, type)) { await ArchiveDirectory(directory, "", archiveStream, includeIds, includeDirName : false); } stream.Position = 0; return(new ArchiveResult { Data = stream, Name = $"{directory.GetExportName(includeIds)}.{type.GetExtension()}", Type = type.GetContentType() }); }
/// <summary> /// Archive a Project. /// Assumes all Directories are fully populated with Files, Workspaces, and child Directories /// </summary> public async Task <ArchiveResult> ArchiveProject(Project project, ArchiveType type, bool includeIds) { var stream = new System.IO.MemoryStream(); using (ArchiveOutputStream archiveStream = ArchiveOutputStream.Create(stream, type)) { foreach (var directory in project.Directories.Where(d => d.ParentId == null)) { await ArchiveDirectory(directory, "", archiveStream, includeIds, includeDirName : true); } } stream.Position = 0; return(new ArchiveResult { Data = stream, Name = $"{project.Name}.{type.GetExtension()}", Type = type.GetContentType() }); }