Ejemplo n.º 1
0
        public async Task <IActionResult> CreateSecretAsync([FromBody] Client.SecretCreationInfo creationInfo,
                                                            CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();

            if (creationInfo == null)
            {
                var error = ErrorResponsesService.BodyIsMissing(nameof(creationInfo));
                return(BadRequest(error));
            }

            const string blackTemplateWithColoredPoints = "1001582";
            var          pointsUrl = await PhotolabService.PostMultipartFormData(creationInfo.ImageUrl, blackTemplateWithColoredPoints);

            var webClient  = new WebClient();
            var imageBytes = await webClient.DownloadDataTaskAsync(pointsUrl);

            Stream stream = new MemoryStream(imageBytes);

            var          description = PhysiognomyService.GetDescription(new Bitmap(stream));
            const string photoTemplateWithColoredPoints = "1001581";
            var          url = await PhotolabService.PostMultipartFormData(creationInfo.ImageUrl, photoTemplateWithColoredPoints);

            var modelCreationInfo = new Model.SecretCreationInfo(url, description);
            var modelSecret       =
                await repository.CreateAsync(modelCreationInfo, cancellationToken).ConfigureAwait(false);

            var clientSecret = Converter.SecretConverter.Convert(modelSecret);

            return(CreatedAtRoute("GetSecretRoute", new { id = clientSecret.Id }, clientSecret));
        }
Ejemplo n.º 2
0
        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));
        }