public async Task <IActionResult> CreateTemporaryFileUrl(string fileId, CreateTemporaryFileUrlViewModel viewModel) { if (viewModel.TimeAmount <= 0) { ModelState.AddModelError(nameof(viewModel.TimeAmount), "Time must be at least 1"); } if (!ModelState.IsValid) { return(View(viewModel)); } var file = await _StoredFileRepository.GetFile(fileId); if (file == null) { return(NotFound()); } var expiry = DateTimeOffset.UtcNow; switch (viewModel.TimeType) { case CreateTemporaryFileUrlViewModel.TmpFileTimeType.Seconds: expiry = expiry.AddSeconds(viewModel.TimeAmount); break; case CreateTemporaryFileUrlViewModel.TmpFileTimeType.Minutes: expiry = expiry.AddMinutes(viewModel.TimeAmount); break; case CreateTemporaryFileUrlViewModel.TmpFileTimeType.Hours: expiry = expiry.AddHours(viewModel.TimeAmount); break; case CreateTemporaryFileUrlViewModel.TmpFileTimeType.Days: expiry = expiry.AddDays(viewModel.TimeAmount); break; default: throw new ArgumentOutOfRangeException(); } var url = await _FileService.GetTemporaryFileUrl(Request.GetAbsoluteRootUri(), fileId, expiry, viewModel.IsDownload); return(RedirectToAction(nameof(Files), new { StatusMessage = new StatusMessageModel() { Severity = StatusMessageModel.StatusSeverity.Success, Html = $"Generated Temporary Url for file {file.FileName} which expires at {expiry.ToBrowserDate()}. <a href='{url}' target='_blank'>{url}</a>" }.ToString(), fileId, })); }
public async Task <IActionResult> CreateTemporaryFileUrl(string fileId, CreateTemporaryFileUrlViewModel viewModel) { if (viewModel.TimeAmount <= 0) { ModelState.AddModelError(nameof(viewModel.TimeAmount), "El tiempo debe ser al menos 1"); } if (!ModelState.IsValid) { return(View(viewModel)); } var file = await _StoredFileRepository.GetFile(fileId); if (file == null) { return(NotFound()); } var expiry = DateTimeOffset.UtcNow; switch (viewModel.TimeType) { case CreateTemporaryFileUrlViewModel.TmpFileTimeType.Seconds: expiry = expiry.AddSeconds(viewModel.TimeAmount); break; case CreateTemporaryFileUrlViewModel.TmpFileTimeType.Minutes: expiry = expiry.AddMinutes(viewModel.TimeAmount); break; case CreateTemporaryFileUrlViewModel.TmpFileTimeType.Hours: expiry = expiry.AddHours(viewModel.TimeAmount); break; case CreateTemporaryFileUrlViewModel.TmpFileTimeType.Days: expiry = expiry.AddDays(viewModel.TimeAmount); break; default: throw new ArgumentOutOfRangeException(); } var url = await _FileService.GetTemporaryFileUrl(fileId, expiry, viewModel.IsDownload); return(RedirectToAction(nameof(Files), new { StatusMessage = new StatusMessageModel() { Html = $"Url temporal generado para archivo {file.FileName} que expira a las {expiry.ToBrowserDate()}. <a href='{url}' target='_blank'>{url}</a>" }.ToString(), fileId, })); }