private SchemaValidation.Provider CreateSchemaProvider(ITweek tweek, IRulesRepository rulesProvider, SchemaValidation.Mode mode) { var logger = loggerFactory.CreateLogger("SchemaValidation.Provider"); SchemaValidation.Provider CreateValidationProvider() { logger.LogInformation("updateing schema"); var schemaIdenetities = tweek.Calculate(new[] { new ConfigurationPath($"@tweek/schema/_") }, EmptyIdentitySet, i => ContextHelpers.EmptyContext).ToDictionary(x => x.Key.Name, x => x.Value.Value); var customTypes = tweek.Calculate(new[] { new ConfigurationPath($"@tweek/custom_types/_") }, EmptyIdentitySet, i => ContextHelpers.EmptyContext).ToDictionary(x => x.Key.Name, x => CustomTypeDefinition.FromJsonValue(x.Value.Value)); return(SchemaValidation.Create(schemaIdenetities, customTypes, mode)); } var validationProvider = CreateValidationProvider(); rulesProvider.OnRulesChange += (_) => { validationProvider = CreateValidationProvider(); }; return((p) => validationProvider(p)); }
private InputValidationContextDriver CreateTarget(Dictionary <string, JsonValue> schemas, Dictionary <string, CustomTypeDefinition> customTypes = null, SchemaValidation.Mode mode = SchemaValidation.Mode.Strict, bool reportOnly = false) => new InputValidationContextDriver(_child, SchemaValidation.Create(schemas, customTypes, mode), reportOnly);