public async Task <ImageDto> AddImage(ImagePostRequest request) { await ValidateImage(request); var extension = GetExtension(request.File.FileName); var image = _mapper.Map <Image>(request); image.Id = Guid.NewGuid().ToString(); image.Name = $"{image.Id}{extension}"; image.NameForCompressed = $"{image.Id}_compressed{extension}"; var pathFull = Path.Combine(_fileOptions.DirectoryPath, image.UserId, image.Name); var pathCompressed = Path.Combine(_fileOptions.DirectoryPath, image.UserId, image.NameForCompressed); await _imageProvider.AddImage(request.File.OpenReadStream(), pathFull); _imageProvider.OptimizeImage(pathFull, pathCompressed, _fileOptions.MaxQuality); _unitOfWork.ImageRepository.Add(image); await _unitOfWork.Commit(); return(_mapper.Map <ImageDto>(image)); }
public async Task <IActionResult> PostImage([FromBody] ImagePostRequest request) { // upload image CloudBlockBlob blockBlob = _container.GetBlockBlobReference($"{request.Id}.{request.EncodingFormat}"); HttpWebRequest aRequest = (HttpWebRequest)WebRequest.Create(request.URL); HttpWebResponse aResponse = (await aRequest.GetResponseAsync()) as HttpWebResponse; var stream = aResponse.GetResponseStream(); await blockBlob.UploadFromStreamAsync(stream); stream.Dispose(); // save metadata var savedImage = new SavedImage { UserId = request.Id, Description = request.Description, StorageUrl = blockBlob.Uri.ToString(), Tags = new List <SavedImageTag>(), }; foreach (var tag in request.Tags) { savedImage.Tags.Add(new SavedImageTag { Tag = tag }); } _context.Add(savedImage); _context.SaveChanges(); return(Ok()); }
//[Route("Post")] // [SwaggerOperation()] public async Task <IActionResult> Post([FromBody] ImagePostRequest request) { CloudBlockBlob blockBlob = _container.GetBlockBlobReference($"{request.id}.{request.encodingFormat}"); HttpWebRequest aRequest = (HttpWebRequest)WebRequest.Create(request.url); HttpWebResponse aResponse = (await aRequest.GetResponseAsync()) as HttpWebResponse; var stream = aResponse.GetResponseStream(); await blockBlob.UploadFromStreamAsync(stream); stream.Dispose(); var savedImage = new SavedImage(); savedImage.UserId = request.userId; savedImage.Description = request.description; savedImage.StorageUrl = blockBlob.Uri.ToString(); savedImage.Tags = new List <SavedImageTag>(); foreach (var tag in request.tags) { savedImage.Tags.Add(new SavedImageTag() { Tag = tag }); } _context.Add(savedImage); _context.SaveChanges(); return(Ok()); }
public async Task <IActionResult> PostPostImage(int postId, [FromForm] ImagePostRequest imageRequest) { imageRequest.PostId = postId; var image = await _imageService.AddPostImage(imageRequest); return(CreatedAtRoute("GetPostImage", new { postId = postId, id = image.ImageId }, image)); }
public async Task <IActionResult> AddImage([FromForm] ImagePostRequest request) { this.CheckUser(request.UserId); var image = await _imageService.AddImage(request); await AddInformationToImage(image); return(Created(Url.Link("GetImage", new { image.Id }), image)); }
public async Task <IActionResult> PostImage([FromBody] ImagePostRequest request) { System.IO.Stream stream = null; IActionResult result = Ok(); try { _logger.Info($"Call PostImage with data: user: {request.UserId}, image: (Id: {request.Id}, description: {request.Description}, tags: {request.Tags}, url: {request.URL})"); var blockBlob = _container.GetBlockBlobReference(string.Format("{0}.{1}", request.Id, request.EncodingFormat)); var aRequest = (HttpWebRequest)WebRequest.Create(request.URL); var aResponse = (await aRequest.GetResponseAsync()) as HttpWebResponse; stream = aResponse.GetResponseStream(); await blockBlob.UploadFromStreamAsync(stream); var savedImage = new SavedImage { UserId = request.UserId, Description = request.Description, StorageUrl = blockBlob.Uri.ToString(), Tags = new List <SavedImageTag>() }; foreach (var tag in request.Tags) { savedImage.Tags.Add(new SavedImageTag { Tag = tag }); } _logger.Debug("PostImage, saving data in db"); _context.Add(savedImage); _context.SaveChanges(); _logger.Debug("PostImage, succes"); } catch (Exception e) { _logger.Error(e, e.Message); result = BadRequest(); } finally { if (stream != null) { stream.Dispose(); } stream.Close(); } return(result); }
private async Task ValidateImage(ImagePostRequest request) { if (await _userManager.FindByIdAsync(request.UserId) == null) { throw new ObjectNotFoundException($"Entity with id {request.UserId} not found"); } if (request.File.Length > _fileOptions.MaxSize) { throw new InvalidOperationException($"The file is too large. Max size is {_fileOptions.MaxSize} bytes"); } }
public void PostImageTest() { AzureToolkitContext context = GetAzureToolkitContext(); var controller = new ImagesController(context); var request = new ImagePostRequest() { URL = new Uri("https://azuretkstorageoleier.blob.core.windows.net/savedimages/D30DFA0F40F3410C282A831D55AF58D9792C225F.jpeg"), EncodingFormat = "jpg", Id = Guid.NewGuid().ToString() }; Task <IActionResult> task = controller.PostImage(request); task.Wait(); }
public async Task <ImageResponse> AddPostImage(ImagePostRequest request) { var file = request.File; var uploadResult = await UploadImage(file); request.ImageUrl = uploadResult.Url.ToString(); request.PublicId = uploadResult.PublicId; request.TimeImage = DateTime.UtcNow; var image = _mapper.Map <PostImage>(request); _context.PostImages.Add(image); await _context.SaveChangesAsync(); return(_mapper.Map <ImageResponse>(image)); }