コード例 #1
0
        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));
        }