private async Task TakeBackup()

in src/BackupExplorer/RestServer/Controllers/BackupController.cs [40:70]


        private async Task<IActionResult> TakeBackup(BackupRequestBody backupRequest, Data.BackupOption backupOption)
        {
            var error = this.ValidateRequest(backupRequest);
            if (!error.IsValid)
            {
                return BadRequest(error);
            }

            if (!this.backupParserManager.HasParsingFinished())
            {
                Response.StatusCode = 423; // resource locked at this time.
                return new JsonResult(new Dictionary<string, string>()
                {
                    { "status", "inprogress" },
                    { "reason", "Backup parsing is still going on. " }
                });
            }

            var timeout = TimeSpan.FromSeconds(backupRequest.TimeoutInSecs);
            var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(backupRequest.TimeoutInSecs));
            var cancellationToken = cancellationTokenSource.Token;
            this.UserBackupLocation = String.IsNullOrWhiteSpace(backupRequest.BackupLocation) ?
                Directory.GetCurrentDirectory() : backupRequest.BackupLocation;

            await this.backupParserManager.BackupParser.BackupAsync(backupOption, timeout, cancellationToken, this.OnBackupCompletionAsync);
            return new JsonResult(new Dictionary<string, string>()
            {
                { "status", "success" },
                { "backPath", this.BackupPath },
            });
        }