Пример #1
0
        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);