예제 #1
0
        public ActionResult <ImageProgressResponse> CompareImagesSync(IFormFile[] files)
        {
            ImageProgressResponse response = new ImageProgressResponse();

            var requestValidationErrors = _requestValidator.ValidateFiles(files);

            if (requestValidationErrors.Count > 0)
            {
                return(CreateBadRequestResponse(response, requestValidationErrors).ToHttpResponse());
            }

            var originalImages = _formFileUtilities.ConvertFilesToImages(files);

            requestValidationErrors = _requestValidator.ValidateImages(originalImages);
            if (requestValidationErrors.Count > 0)
            {
                return(CreateBadRequestResponse(response, requestValidationErrors).ToHttpResponse());
            }

            var foundDiffObjects = _objectsFinder.FindAllDiffObjects(originalImages[0], originalImages[1]).ToArray();
            var resultImageData  = _imageGenerator.DrawRectangles(_formFileUtilities.SerializeFile(files[0]), files[0].ContentType, foundDiffObjects);

            int newImageId = GenerateImageId();

            SaveResutlImageToStorage(new ResultImage(newImageId, resultImageData, 100, files[0].ContentType, 1));

            response.ImageId = newImageId;
            response.Percent = 100;
            return(response.ToHttpResponse());
        }
예제 #2
0
        public ActionResult <ImageProgressResponse> CompareImagesAsync(IFormFile[] files)
        {
            ImageProgressResponse response = new ImageProgressResponse();

            var requestValidationErrors = _requestValidator.ValidateFiles(files);

            if (requestValidationErrors.Count > 0)
            {
                return(CreateBadRequestResponse(response, requestValidationErrors).ToHttpResponse());
            }

            var originalImages = _formFileUtilities.ConvertFilesToImages(files);

            requestValidationErrors = _requestValidator.ValidateImages(originalImages);
            if (requestValidationErrors.Count > 0)
            {
                return(CreateBadRequestResponse(response, requestValidationErrors).ToHttpResponse());
            }

            int newImageId = GenerateImageId();

            SaveResutlImageToStorage(new ResultImage(newImageId, _formFileUtilities.SerializeFile(files[0]), 0,
                                                     files[0].ContentType, 1));

            response.ImageId = newImageId;

            FindObjectsAsync(originalImages, newImageId);

            return(response.ToHttpResponse());
        }
예제 #3
0
        private ImageProgressResponse CreateBadRequestResponse(ImageProgressResponse response, IList <string> requestValidationErrors)
        {
            if (response is null)
            {
                throw new ArgumentException(nameof(response));
            }

            response.ErrorMessage   = string.Join(",", requestValidationErrors);
            response.HttpStatusCode = HttpStatusCode.BadRequest;
            return(response);
        }
예제 #4
0
        public ActionResult <ImageProgressResponse> GetImageProgress(int imageId)
        {
            ImageProgressResponse response = new ImageProgressResponse();

            var resultImage = _imageStorage.Get(imageId);

            if (resultImage == null)
            {
                response.HttpStatusCode = HttpStatusCode.NotFound;
            }
            else
            {
                response.ImageId      = resultImage.ImageId;
                response.Percent      = resultImage.PercentsProcessed;
                response.ImageVersion = resultImage.ImageVersion;
            }

            return(response.ToHttpResponse());
        }