public async Task ZipArchiveServiceCompressTestAsync() { ICompressionService service = new ZipArchiveService(new LocalStorageService()); var file = await storageService.CreateOrGetFileAsync("data.zip"); var folder = await storageService.CreateOrGetFolderAsync("Data"); var result = await service.CompressAsync(folder, file); Assert.IsTrue(result); // Unzip var unzipFolder = await storageService.CreateOrGetFolderAsync("UnzipedData"); result = await service.UncompressAsync(file, unzipFolder); Assert.IsTrue(result); }
/// <summary> /// Download the selected backup and replace the current data with it. /// </summary> /// <returns></returns> private async Task DownloadBackupAsync() { BackupIsIndeterminate = true; BackupStatusText = "Perpare download ..."; bool download = true; var dialog = new MessageDialog("Downloading a Backup will replace all local data.", "OneDrive Backup"); dialog.Commands.Add(new UICommand("Download", null, "Download")); dialog.Commands.Add(new UICommand("Cancel", null, "Cancel")); if ((await dialog.ShowAsync()).Id.ToString() == "Cancel") { download = false; } if (download) { var localBackup = await localStorageService.GetFileAsync(uploadZip); if (localBackup == null) { try { await zipArchiveService.CompressAsync(DataPath, uploadZip); // TODO: fix deprecation } catch { // TODO: Add error handling. } } BackupStatusText = $"Download Backup (total: {SelectedOneDriveItem.Size} bytes) ..."; try { var backupStream = await oneDriveService.GetContentByIdAsync(SelectedOneDriveItem.Id); if (backupStream != null) { // Delete folder await localStorageService.DeleteFolderAsync(DataPath); var folder = await localStorageService.CreateOrGetFileAsync(downloadZip); using (backupStream) { using (var fileStream = await folder.OpenStreamForWriteAsync()) { backupStream.Position = 0; fileStream.Position = 0; await backupStream.CopyToAsync(fileStream); } } try { await zipArchiveService.UncompressAsync(downloadZip); // TODO: fix deprecation } catch { await localStorageService.DeleteFolderAsync(DataPath); await zipArchiveService.UncompressAsync(uploadZip); // TODO: fix deprecation await new MessageDialog("An error occured while saving the backup. Old data have been restored.", "OneDrive Backup").ShowAsync(); } } else { await new MessageDialog("An error occured while downloading a backup. Please try again later.", "OneDrive Backup").ShowAsync(); } } catch (Exception) { await new MessageDialog("An error occured while downloading a backup. Please try again later.", "OneDrive Backup").ShowAsync(); } } await localStorageService.DeleteFileAsync(downloadZip); SelectedOneDriveItem = null; BackupIsIndeterminate = false; BackupStatusText = string.Empty; }