Exemple #1
0
        public async Task Prepare(IFileValidationContext fileValidationContext, CancellationToken cancellationToken)
        {
            if (IsZip(fileValidationContext.FileReference))
            {
                using (var inputStream = await _fileService.OpenReadStreamAsync(fileValidationContext.FileReference, fileValidationContext.Container, cancellationToken))
                {
                    var archiveEntryFileNames = _decompressionService.GetZipArchiveEntryFileNames(inputStream).ToList();

                    var archiveEntryXmlFileNames = archiveEntryFileNames.Where(n => n.IndexOf(XmlExtension, StringComparison.OrdinalIgnoreCase) >= 0).ToList();

                    ValidateXmlFileNames(archiveEntryXmlFileNames);

                    var archiveEntryIlrXmlFileName = archiveEntryXmlFileNames.First();

                    var outputFileReference = BuildIlrXmlFileReference(fileValidationContext.FileReference);

                    using (var outputStream = await _fileService.OpenWriteStreamAsync(outputFileReference, fileValidationContext.Container, cancellationToken))
                    {
                        await _decompressionService.DecompressAsync(inputStream, outputStream, archiveEntryIlrXmlFileName, cancellationToken);
                    }

                    UpdateFileValidationContext(fileValidationContext, outputFileReference);
                }
            }
        }
        public async Task <Message> ProvideAsync(IFileValidationContext fileValidationContext, CancellationToken cancellationToken)
        {
            using (var stream = await _fileService.OpenReadStreamAsync(fileValidationContext.FileReference, fileValidationContext.Container, cancellationToken))
            {
                _xsdValidationService.Validate(stream);

                stream.Position = 0;

                return(_xmlSerializationService.Deserialize <Message>(stream));
            }
        }
        public async Task OutputAsync(IFileValidationContext fileValidationContext, Message message, IEnumerable <IValidationError> validationErrors, CancellationToken cancellationToken)
        {
            var outputFileReference = BuildOutputFileReference(fileValidationContext.FileReference);

            using (var fileStream = await _fileService.OpenWriteStreamAsync(outputFileReference, fileValidationContext.Container, cancellationToken))
            {
                _xmlSerializationService.Serialize(message, fileStream);
            }

            fileValidationContext.FileReference = outputFileReference;

            var ioValidationErrors = _fileValidationIoModelBuilder.BuildValidationErrors(validationErrors).ToList();

            await _stronglyTypedKeyValuePersistenceService.SaveAsync(fileValidationContext.ValidationErrorsKey, ioValidationErrors, cancellationToken);
        }
        public async Task Validate(IFileValidationContext fileValidationContext, CancellationToken cancellationToken)
        {
            try
            {
                _logger.LogInfo("Starting File Validation Preparation Service");
                await _fileValidationPreparationService.Prepare(fileValidationContext, cancellationToken);
                _logger.LogInfo("Finished File Validation Preparation Service");

                // Get File
                _logger.LogInfo("Starting Loose Message Provide");
                var looseMessage = await _looseMessageProvider.ProvideAsync(fileValidationContext, cancellationToken);
                _logger.LogInfo("Finished Loose Message Provide");

                // Validation Rules
                _logger.LogInfo("Starting Message Validation");
                _fileValidationRuleExecutionService.Execute(looseMessage);
                _logger.LogInfo("Finished Message Validation");

                var validationErrors = _validationErrorHandler.ValidationErrors.ToList();

                // Filter
                _logger.LogInfo("Starting Valid Learner Filter");
                var validLooseMessage = _tightSchemaValidMessageFilterService.ApplyFilter(looseMessage, validationErrors);
                _logger.LogInfo("Finished Valid Learner Filter");

                // Map to Tight Schema
                _logger.LogInfo("Starting Map to Tight Schema");
                var tightMessage = _mapper.MapTo(validLooseMessage);
                _logger.LogInfo("Finished Map to Tight Schema");

                // Output Tight Xml File
                _logger.LogInfo("Starting Validation Output");
                await _fileValidationOutputService.OutputAsync(fileValidationContext, tightMessage, validationErrors, cancellationToken);
                _logger.LogInfo("Finished Validation Output");
            }
            catch (Exception exception) when (_fileFailureExceptions.Contains(exception.GetType()))
            {
                _logger.LogError("File Validation Failure Output", exception);
                await _fileValidationOutputService.OutputFileValidationFailureAsync(fileValidationContext, _validationErrorHandler.ValidationErrors, cancellationToken);
                throw new FileValidationServiceFileFailureException("File Validation Service File Failure", exception);
            }
        }
Exemple #5
0
 public void UpdateFileValidationContext(IFileValidationContext fileValidationContext, string outputFileReference)
 {
     fileValidationContext.FileReference         = outputFileReference;
     fileValidationContext.OriginalFileReference = outputFileReference;
 }
        public async Task OutputFileValidationFailureAsync(IFileValidationContext fileValidationContext, IEnumerable <IValidationError> validationErrors, CancellationToken cancellationToken)
        {
            var ioValidationErrors = _fileValidationIoModelBuilder.BuildValidationErrors(validationErrors).ToList();

            await _stronglyTypedKeyValuePersistenceService.SaveAsync(fileValidationContext.ValidationErrorsKey, ioValidationErrors, cancellationToken);
        }
 public Task Prepare(IFileValidationContext fileValidationContext, CancellationToken cancellationToken)
 {
     return(Task.CompletedTask);
 }