示例#1
0
        public async Task <ActionResult> AddUserPhoto(int userId, [FromForm] UserPhotoRequest userPhotoRequest)
        {
            if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                throw new RestException(HttpStatusCode.Forbidden);
            }

            var photoAdded = await _serv.AddUserPhoto(userId, userPhotoRequest);

            return(CreatedAtRoute("GetPhoto", new { id = photoAdded.Id, userId = userId }, photoAdded));
        }
示例#2
0
        // один контейнер для всех
        public async Task <(string Error, string Url)> UploadToBlob(UserPhotoRequest userPhoto)
        {
            try
            {
                BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName);
                await containerClient.CreateIfNotExistsAsync();

                containerClient.SetAccessPolicy(PublicAccessType.Blob);
                BlobClient blobClient = containerClient.GetBlobClient(userPhoto.Photo.FileName);
                await blobClient.UploadAsync(userPhoto.Photo.OpenReadStream(), new BlobHttpHeaders { ContentType = "image/jpeg" });

                return(null, blobClient.Uri.ToString());
            }
            catch (Exception)
            {
                return("Blob connection error", null);
            }
        }
示例#3
0
        public async Task <PhotoCreateResponse> AddUserPhoto(int userId, UserPhotoRequest userPhotoRequest)
        {
            var photoUploadResult = _photoAccessor.AddPhoto(userPhotoRequest.File);
            var user = await _usersRepo.Get(userId);

            var photo = new Photo();

            _mapper.Map(userPhotoRequest, photo);

            photo.Url      = photoUploadResult.Url;
            photo.PublicId = photoUploadResult.PublicId;
            photo.IsMain   = !user.Photos.Any(p => p.IsMain);
            photo.User     = user;


            await _repo.Create(photo);

            return(_mapper.Map <PhotoCreateResponse>(photo));
        }
示例#4
0
        public async Task <IActionResult> UploadToBlob([FromForm] UserPhotoRequest request)
        {
            var uploadToBlobResult = await _savedItemsService.UploadToBlob(request);

            if (uploadToBlobResult.Error == null)
            {
                return(Ok(uploadToBlobResult.Url));
            }

            var problemDetals = new ProblemDetails
            {
                Status = 400,
                Title  = uploadToBlobResult.Error
            };

            return(new ObjectResult(problemDetals)
            {
                ContentTypes = { "application/problem+json" },
                StatusCode = 400
            });
        }