public async Task <IActionResult> UploadImageAsync(IFormFile imageFile, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); if (imageFile == null) { var error = ErrorResponsesService.BodyIsMissing(nameof(imageFile)); return(BadRequest(error)); } var imageId = Guid.NewGuid(); var imageName = imageId.ToString(); var extension = Path.GetExtension(imageFile.FileName); var path = $"{ImageDirectory}{imageName}{extension}"; var stream = imageFile.OpenReadStream(); ClientModels.Secrets.Secret clientSecret; if (ImageValidationService.IsValidLength(imageFile.Length) && ImageValidationService.IsImage(stream)) { var webDirectoryPath = $"{hostingEnvironment.WebRootPath}{ImageDirectory}"; if (!Directory.Exists(webDirectoryPath)) { Directory.CreateDirectory(webDirectoryPath); } using (var fileStream = new FileStream($"{hostingEnvironment.WebRootPath}{path}", FileMode.Create)) { await imageFile.CopyToAsync(fileStream, cancellationToken).ConfigureAwait(false); var creationInfo = new SecretCreationInfo(path, string.Empty); var modelSecret = await repository.CreateAsync(creationInfo, cancellationToken).ConfigureAwait(false); clientSecret = Converter.SecretConverter.Convert(modelSecret); } } else { var error = ErrorResponsesService.InvalidImageData(nameof(imageFile)); return(BadRequest(error)); } return(Ok(clientSecret)); }
public Task <Secret> CreateAsync(SecretCreationInfo creationInfo, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); if (creationInfo == null) { throw new ArgumentNullException(nameof(creationInfo)); } var id = Guid.NewGuid(); var secret = new Secret { Id = id, ImageUrl = creationInfo.ImageUrl, Description = creationInfo.Description }; secrets.InsertOne(secret, cancellationToken: cancellationToken); return(Task.FromResult(secret)); }