public ValidationResult ValidateFormImageFile(IFormFile formFile, List <FileExtensions> customFileExtensions = null, List <string> customMimeTypes = null, long customMaxFileSize = 0)
        {
            List <FileExtensions> allowedFileExtensions = customFileExtensions == null ? this.configurationConstants.ImageValidationRules.AllowedFormatExtensionsAsEnum : customFileExtensions;
            List <string>         allowedMimeTypes      = customMimeTypes == null ? this.configurationConstants.ImageValidationRules.AllowedMimeTypes : customMimeTypes;
            long maxAllowedFileSize = customMaxFileSize == 0 ? this.configurationConstants.ImageValidationRules.MaxAllowedFileSize : customMaxFileSize;

            var startupHandler       = new StartupHandler <IFormFile>();
            var fileExtensionHandler = new FileExtensionHandler(allowedFileExtensions);
            var fileMimeTypesHandler = new FileMimeTypesHandler(allowedMimeTypes);
            var fileSizeHandler      = new FileSizeHandler(maxAllowedFileSize);
            var imageBoxingHandler   = new ImageBoxingHandler();

            startupHandler
            .SetNext(fileExtensionHandler)
            .SetNext(fileMimeTypesHandler)
            .SetNext(fileSizeHandler)
            .SetNext(imageBoxingHandler);

            ValidationResult validationResult = new ValidationResult();
            string           resultMessage    = string.Empty;

            validationResult.Success = startupHandler.Handle(formFile, out resultMessage) != null;
            validationResult.Message = resultMessage;
            if (validationResult.Success)
            {
                validationResult.Message = "Image file is valid.";
            }

            return(validationResult);
        }
        /// <inheritdoc/>
        public ValidationResult ValidateFormFile(IFormFile formFile, List <FileExtensions> customFileExtensions = null, List <string> customMimeTypes = null, long customMaxFileSize = 0)
        {
            List <FileExtensions> allowedFileExtensions = customFileExtensions ?? this.allowedFileFormatExtensions;
            List <string>         allowedMimeTypes      = customMimeTypes ?? this.allowedFilesMimeTypes;
            long maxAllowedFileSize = customMaxFileSize == 0 ? this.options.MaxAllowedFileSize : customMaxFileSize;

            var startupHandler       = new StartupHandler <IFormFile>();
            var fileExtensionHandler = new FileExtensionHandler(allowedFileExtensions);
            var fileMimeTypesHandler = new FileMimeTypesHandler(allowedMimeTypes);
            var fileSizeHandler      = new FileSizeHandler(maxAllowedFileSize);

            startupHandler
            .SetNext(fileExtensionHandler)
            .SetNext(fileMimeTypesHandler)
            .SetNext(fileSizeHandler);

            ValidationResult validationResult = new ValidationResult();

            validationResult.Succeeded = startupHandler.Handle(formFile, out var resultMessage) != null;
            validationResult.Message   = resultMessage;
            if (validationResult.Succeeded)
            {
                validationResult.Message = "File is valid.";
            }

            return(validationResult);
        }