/// <summary> /// Activate the validation mechanism, so every request DTO with an existing validator /// will be validated. /// </summary> /// <param name="appHost">The app host</param> public void Register(IAppHost appHost) { if (TreatInfoAndWarningsAsErrors) { if (!appHost.GlobalRequestFiltersAsync.Contains(ValidationFilters.RequestFilterAsync)) { appHost.GlobalRequestFiltersAsync.Add(ValidationFilters.RequestFilterAsync); } if (!appHost.GlobalMessageRequestFiltersAsync.Contains(ValidationFilters.RequestFilterAsync)) { appHost.GlobalMessageRequestFiltersAsync.Add(ValidationFilters.RequestFilterAsync); } } else { if (!appHost.GlobalRequestFiltersAsync.Contains(ValidationFilters.RequestFilterAsyncIgnoreWarningsInfo)) { appHost.GlobalRequestFiltersAsync.Add(ValidationFilters.RequestFilterAsyncIgnoreWarningsInfo); } if (!appHost.GlobalMessageRequestFiltersAsync.Contains(ValidationFilters.RequestFilterAsyncIgnoreWarningsInfo)) { appHost.GlobalMessageRequestFiltersAsync.Add(ValidationFilters.RequestFilterAsyncIgnoreWarningsInfo); } if (!appHost.GlobalResponseFiltersAsync.Contains(ValidationFilters.ResponseFilterAsync)) { appHost.GlobalResponseFiltersAsync.Add(ValidationFilters.ResponseFilterAsync); } if (!appHost.GlobalMessageResponseFiltersAsync.Contains(ValidationFilters.ResponseFilterAsync)) { appHost.GlobalMessageResponseFiltersAsync.Add(ValidationFilters.ResponseFilterAsync); } } if (ValidationSource != null) { appHost.Register(ValidationSource); ValidationSource.InitSchema(); } var container = appHost.GetContainer(); var hasValidationSource = ValidationSource != null || container.Exists <IValidationSource>(); if (hasValidationSource && AccessRole != null) { foreach (var registerService in ServiceRoutes) { appHost.RegisterService(registerService.Key, registerService.Value); } } if (ScanAppHostAssemblies) { container.RegisterValidators(((ServiceStackHost)appHost).ServiceAssemblies.ToArray()); } }
/// <summary> /// Activate the validation mechanism, so every request DTO with an existing validator /// will be validated. /// </summary> /// <param name="appHost">The app host</param> public void Register(IAppHost appHost) { if (TreatInfoAndWarningsAsErrors) { if (!appHost.GlobalRequestFiltersAsync.Contains(ValidationFilters.RequestFilterAsync)) { appHost.GlobalRequestFiltersAsync.Add(ValidationFilters.RequestFilterAsync); } if (!appHost.GlobalMessageRequestFiltersAsync.Contains(ValidationFilters.RequestFilterAsync)) { appHost.GlobalMessageRequestFiltersAsync.Add(ValidationFilters.RequestFilterAsync); } } else { if (!appHost.GlobalRequestFiltersAsync.Contains(ValidationFilters.RequestFilterAsyncIgnoreWarningsInfo)) { appHost.GlobalRequestFiltersAsync.Add(ValidationFilters.RequestFilterAsyncIgnoreWarningsInfo); } if (!appHost.GlobalMessageRequestFiltersAsync.Contains(ValidationFilters.RequestFilterAsyncIgnoreWarningsInfo)) { appHost.GlobalMessageRequestFiltersAsync.Add(ValidationFilters.RequestFilterAsyncIgnoreWarningsInfo); } if (!appHost.GlobalResponseFiltersAsync.Contains(ValidationFilters.ResponseFilterAsync)) { appHost.GlobalResponseFiltersAsync.Add(ValidationFilters.ResponseFilterAsync); } if (!appHost.GlobalMessageResponseFiltersAsync.Contains(ValidationFilters.ResponseFilterAsync)) { appHost.GlobalMessageResponseFiltersAsync.Add(ValidationFilters.ResponseFilterAsync); } } if (ValidationSource != null) { appHost.Register(ValidationSource); ValidationSource.InitSchema(); } var container = appHost.GetContainer(); var hasValidationSource = ValidationSource != null || container.Exists <IValidationSource>(); if (hasValidationSource && AccessRole != null) { appHost.RegisterServices(ServiceRoutes); } if (ScanAppHostAssemblies) { container.RegisterValidators(((ServiceStackHost)appHost).ServiceAssemblies.ToArray()); } appHost.AddToAppMetadata(metadata => { metadata.Plugins.Validation = new ValidationInfo { HasValidationSource = hasValidationSource.NullIfFalse(), HasValidationSourceAdmin = (container.TryResolve <IValidationSource>() is IValidationSourceAdmin).NullIfFalse(), ServiceRoutes = ServiceRoutes.ToMetadataServiceRoutes(), TypeValidators = !EnableDeclarativeValidation ? null : appHost.ScriptContext.ScriptMethods.SelectMany(x => ScriptMethodInfo.GetScriptMethods(x.GetType(), where : mi => typeof(ITypeValidator).IsAssignableFrom(mi.ReturnType))) .Map(x => x.ToScriptMethodType()), PropertyValidators = !EnableDeclarativeValidation ? null : appHost.ScriptContext.ScriptMethods.SelectMany(x => ScriptMethodInfo.GetScriptMethods(x.GetType(), where : mi => typeof(IPropertyValidator).IsAssignableFrom(mi.ReturnType))) .Map(x => x.ToScriptMethodType()), AccessRole = AccessRole, }; }); appHost.GetPlugin <MetadataFeature>()?.ExportTypes.Add(typeof(ValidationRule)); }
private static ReportEntry ReportIssue(rule rule, string context, string phase, assert assrt, ValidationSource validationSource) { return new ReportEntry { AssertId = assrt.id, Context = context, Phase = phase, Query = assrt.test, RuleId = rule.id, Detail = assrt.Text.Aggregate((t1, t2) => string.Format("{0} {1}", t1, t2)), ValidationSource = validationSource }; }