public object Execute(ExecutorContext context) { var cmdletContext = context as CmdletContext; var client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint); Utils.Common.WriteVerboseEndpointMessage(this, Client.Config, "GetJobOutput"); using (var transferManager = new ArchiveTransferManager(client)) { var runner = new ProgressRunner(this); var downloadOptions = new DownloadOptions { AccountId = cmdletContext.AccountId }; var tracker = new DownloadProgressTracker(runner, handler => downloadOptions.StreamTransferProgress += handler, cmdletContext.FilePath); var output = runner.SafeRun(() => { #if DESKTOP transferManager.DownloadJob(cmdletContext.VaultName, cmdletContext.JobId, cmdletContext.FilePath, downloadOptions); #else transferManager.DownloadJobAsync(cmdletContext.VaultName, cmdletContext.JobId, cmdletContext.FilePath, downloadOptions).Wait(); #endif }, tracker); return(output); } }
public DownloadViewModel(Download download, IDownloadService downloadService) { if (download == null) { return; } this.Download = download; download.State = CurrentDownloadState.Stop; PauseIcon = FontAwesomeIcon.Ban; this.DownloadName = download.TargetFileName; this._downloadService = downloadService; DownloadTracker = new DownloadProgressTracker(50, TimeSpan.FromMilliseconds(500)); _downloadService.DownloadProgressChanged += DownloadServiceOnDownloadProgressChanged; _downloadService.DownloadComplete += DownloadServiceOnDownloadComplete; _downloadService.DownloadCancel += DownloadServiceOnDownloadCancel; _downloadService.DownloadPause += DownloadServiceOnDownloadPause; }