public ActionResult <Guid> Post( PostRequestDto dto) { var(linkString, saveAsFileName) = dto; var linkResult = Link.Create(linkString); if (linkResult.IsFailure) { return(BadRequest(linkResult.Error)); } var link = linkResult.Value; var saveAsFileResult = SaveAsFile.Create( link, _completedDownloadsDirectory, saveAsFileName); if (saveAsFileResult.IsFailure) { return(BadRequest(saveAsFileResult.Error)); } var job = _notificationsManager.AddNotificationEventHandlers( _downloadManager.CreateDownloadJob(link, saveAsFileResult.Value)); var(_, isFailure, error) = _downloadStarter.Start(job); return(isFailure ? Problem(error) : Ok(job.Id.Value)); }