Exemplo n.º 1
0
        public async Task ExecuteAsync(DownloadMonitorCommand.Parameters parameters)
        {
            await this.ensureAuthenticated.ExecuteAsync();

            var inputFolder  = this.getCreatedOutputFolder.Execute(parameters.InputFolder);
            var outputFolder = this.getCreatedOutputFolder.Execute(parameters.OutputFolder);

            using var cts = CommandUtilities.CreateCommandCancellationTokenSource();

            var channel = Channel.CreateUnbounded <QueuedDownloadToken>();

            try
            {
                var monitorDownloadsTask = this.monitorDownloads.ExecuteAsync(
                    channel.Writer,
                    inputFolder,
                    cts.Token);

                await this.processDownloads.ExecuteAsync(
                    channel.Reader,
                    targetFolder : outputFolder,
                    generateCsv : parameters.GenerateCsv,
                    keepBinary : parameters.KeepBinary,
                    postProcessorPath : parameters.PostProcessor,
                    postProcessorArguments : parameters.PostProcessorArguments,
                    cancellationToken : cts.Token);

                await monitorDownloadsTask;
            }
            catch (Exception t) when(ExceptionUtilities.IsFromCancellation(t))
            {
                // Download monitoring was cancelled.
            }
        }
            public async Task ExecuteAsync(Parameters parameters)
            {
                await this.ensureAuthenticated.ExecuteAsync();

                if (!parameters.Target.Exists)
                {
                    throw new RecoverableException("Folder not found: " + parameters.Target.FullName);
                }

                var cts = CommandUtilities.CreateCommandCancellationTokenSource();

                await this.processLocalStudyResults.ExecuteAsync(parameters.Target.FullName, !parameters.KeepOriginal, cts.Token);
            }