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); } }
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); }