public void InsertFileSystem(FileSystemDTO model) { Mapper.Initialize(cfg => cfg.CreateMap <FileSystemDTO, FileSystem>()); var fileSystem = Mapper.Map <FileSystem>(model); try { var folderExist = _fileSystemRepository.Get(fileSystem.UserId, fileSystem.ParentId, fileSystem.Name); if (folderExist) { _fileSystemRepository.InsertObject(fileSystem); } } catch (DataException ex) { Trace.TraceError(ex.Message); throw; } catch (Exception ex) { Trace.TraceError(ex.Message); throw; } }
public async Task Listen() { Console.WriteLine("Archive listener started listen:"); Trace.TraceError("Archive listener started listen"); while (true) { var messages = Queue.GetMessages(CountMessages, TimeSpan.FromHours(InvisibleTime)); Parallel.ForEach(messages, async message => { try { ArchiveModel archiveModel = JsonConvert.DeserializeObject <ArchiveModel>(message.AsString); Console.WriteLine(message.AsString); byte[] outputZIP; using (MemoryStream outputMemStream = new MemoryStream()) { using (ZipOutputStream zipStream = new ZipOutputStream(outputMemStream)) { zipStream.SetLevel(3); string entryLocateName = ""; foreach (var fileSystemId in archiveModel.FileSystemsId) { FileSystemDTO fileSystem = _fileSystemService.Get(fileSystemId); if (fileSystem != null) { await ZipArchivingFileSystemTreeAsync(fileSystem, zipStream, archiveModel.UserId, entryLocateName); } } zipStream.IsStreamOwner = false; zipStream.Close(); outputMemStream.Position = 0; outputZIP = outputMemStream.ToArray(); } } await UploadFileInBlocksAsync(outputZIP, archiveModel.Id); Queue.DeleteMessage(message); } catch (Exception ex) { Trace.TraceError(ex.InnerException.Message); } }); } }
private void UserFileSystem_Test_Assertion(FileSystem expectedFilesystem, FileSystemDTO filesystemDto) { Assert.AreEqual(expectedFilesystem.BlobLink, filesystemDto.BlobLink); Assert.AreEqual(expectedFilesystem.BlobThumbnail, filesystemDto.BlobThumbnail); Assert.AreEqual(expectedFilesystem.Id, filesystemDto.Id); Assert.AreEqual(expectedFilesystem.Name, filesystemDto.Name); Assert.AreEqual(expectedFilesystem.ParentId, filesystemDto.ParentId); Assert.AreEqual(expectedFilesystem.Size, filesystemDto.Size); Assert.AreEqual(expectedFilesystem.Type, filesystemDto.Type); Assert.AreEqual(expectedFilesystem.UserId, filesystemDto.UserId); }
public async Task ZipArchivingFileSystemTreeAsync(FileSystemDTO fileSystem, ZipOutputStream zipStream, string userId, string entryLocateName) { if (fileSystem.BlobLink != null) { string blobLink = ConfigurationManager.AppSettings.Get("azureStorageBlobLink") + fileSystem.BlobLink; byte[] fileBytes = await DownloadFileAsync(blobLink); string locateName = entryLocateName; if (entryLocateName != null) { locateName += fileSystem.Name + fileSystem.Type; } string entryName = ZipEntry.CleanName(locateName); ZipEntry newEntry = new ZipEntry(entryName); newEntry.Size = (long)fileSystem.Size; newEntry.IsUnicodeText = true; zipStream.PutNextEntry(newEntry); using (MemoryStream inputMemoryStream = new MemoryStream(fileBytes)) { byte[] buffer = new byte[4096]; StreamUtils.Copy(inputMemoryStream, zipStream, buffer); } zipStream.CloseEntry(); } else { string locateName = entryLocateName; locateName += fileSystem.Name + "/"; string entryName = ZipEntry.CleanName(locateName); ZipEntry newEntry = new ZipEntry(entryName); newEntry.IsUnicodeText = true; zipStream.PutNextEntry(newEntry); zipStream.CloseEntry(); List <FileSystemDTO> fileSystems = _fileSystemService.GetAll(userId, fileSystem.Id).ToList(); foreach (var fs in fileSystems) { await ZipArchivingFileSystemTreeAsync(fs, zipStream, userId, locateName); } } }