Beispiel #1
0
        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;
        }