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 },
});
}