public async Task Consume(ConsumeContext <ValidateStandardize> context) { try { using (var blob = await blobStorage.GetFileAsync(context.Message.BlobId, context.Message.Bucket)) { StreamReader reader = new StreamReader(blob.GetContentAsStream()); string mol = reader.ReadToEnd(); var validResult = validation.Validate(mol); var standardResult = standardization.Standardize(mol); var newId = Guid.NewGuid(); var issues = standardResult.Issues.Concat(validResult.Issues); var record = new StandardizedValidatedRecord { StandardizedId = newId, Issues = IssuesResolver.ResolveIssues(issues, issuesConfig) }; var bucket = context.Message.Id.ToString(); await blobStorage.AddFileAsync(newId, $"{newId}.mol", new MemoryStream(Encoding.UTF8.GetBytes(standardResult.Standardized)), "chemical/x-mdl-molfile", bucket); await context.Publish <ValidatedStandardized>(new { Id = context.Message.Id, Record = record, UserId = context.Message.UserId, TimeStamp = DateTimeOffset.UtcNow, CorrelationId = context.Message.CorrelationId }); } } catch (Exception ex) { await context.Publish <StandardizationValidationFailed>(new { Id = context.Message.Id, UserId = context.Message.UserId, TimeStamp = DateTimeOffset.UtcNow, CorrelationId = context.Message.CorrelationId, Message = $"Blob with id {context.Message.BlobId} from bucket {context.Message.Bucket} can not be validated and standardized or not found. Error: {ex.Message}" }); } }
public async Task Consume(ConsumeContext <Validate> context) { try { using (var blob = await blobStorage.GetFileAsync(context.Message.BlobId, context.Message.Bucket)) { StreamReader reader = new StreamReader(blob.GetContentAsStream()); string mol = reader.ReadToEnd(); var result = validation.Validate(mol); await context.Publish <Validated>(new { Id = context.Message.Id, Record = new ValidatedRecord { Issues = IssuesResolver.ResolveIssues(result.Issues, issuesConfig) }, UserId = context.Message.UserId, TimeStamp = DateTimeOffset.UtcNow, CorrelationId = context.Message.CorrelationId }); } } catch (Exception ex) { await context.Publish <ValidationFailed>(new { Id = context.Message.Id, UserId = context.Message.UserId, TimeStamp = DateTimeOffset.UtcNow, CorrelationId = context.Message.CorrelationId, Message = $"Blob with id {context.Message.BlobId} from bucket {context.Message.Bucket} cannot be validated or not found. Error: {ex.Message}" }); } }