public ValidateAndHashIfNeeded(ReadOnlySettings settings) { this.settings = settings; // validators defaultQueuePathValidation = queuePath => { var validationResult = new ValidationResult(); if (!queueAndTopicPathValidationRegex.IsMatch(queuePath)) { validationResult.AddErrorForInvalidCharacters($"Queue path {queuePath} contains illegal characters. Legal characters should match the following regex: `{queuePath}`."); } var maximumLength = settings.GetOrDefault <int>(WellKnownConfigurationKeys.Topology.Addressing.Sanitization.QueuePathMaximumLength); if (queuePath.Length > maximumLength) { validationResult.AddErrorForInvalidLenth($"Queue path `{queuePath}` exceeds maximum length of {maximumLength} characters."); } return(validationResult); }; defaultTopicPathValidation = topicPath => { var validationResult = new ValidationResult(); if (!queueAndTopicPathValidationRegex.IsMatch(topicPath)) { validationResult.AddErrorForInvalidCharacters($"Topic path {topicPath} contains illegal characters. Legal characters should match the following regex: `{topicPath}`."); } var maximumLength = settings.GetOrDefault <int>(WellKnownConfigurationKeys.Topology.Addressing.Sanitization.TopicPathMaximumLength); if (topicPath.Length > maximumLength) { validationResult.AddErrorForInvalidLenth($"Topic path `{topicPath}` exceeds maximum length of {maximumLength} characters."); } return(validationResult); }; defaultSubscriptionNameValidation = subscriptionName => { var validationResult = new ValidationResult(); if (!subscriptionAndRuleNameValidationRegex.IsMatch(subscriptionName)) { validationResult.AddErrorForInvalidCharacters($"Subscription name {subscriptionName} contains illegal characters. Legal characters should match the following regex: `{subscriptionName}`."); } var maximumLength = settings.GetOrDefault <int>(WellKnownConfigurationKeys.Topology.Addressing.Sanitization.SubscriptionNameMaximumLength); if (subscriptionName.Length > maximumLength) { validationResult.AddErrorForInvalidLenth($"Subscription name `{subscriptionName}` exceeds maximum length of {maximumLength} characters."); } return(validationResult); }; defaultRuleNameValidation = ruleName => { var validationResult = new ValidationResult(); if (!subscriptionAndRuleNameValidationRegex.IsMatch(ruleName)) { validationResult.AddErrorForInvalidCharacters($"Rule name {ruleName} contains illegal characters. Legal characters should match the following regex: `{ruleName}`."); } var maximumLength = settings.GetOrDefault <int>(WellKnownConfigurationKeys.Topology.Addressing.Sanitization.RuleNameMaximumLength); if (ruleName.Length > maximumLength) { validationResult.AddErrorForInvalidLenth($"Rule name `{ruleName}` exceeds maximum length of {maximumLength} characters."); } return(validationResult); }; // sanitizers defaultQueuePathSanitization = queuePath => queueAndTopicPathSanitizationRegex.Replace(queuePath, string.Empty); defaultTopicPathSanitization = topicPath => queueAndTopicPathSanitizationRegex.Replace(topicPath, string.Empty); defaultSubscriptionNameSanitization = subscriptionPath => subscriptionAndRuleNameSanitizationRegex.Replace(subscriptionPath, string.Empty); defaultRuleNameSanitization = rulePath => subscriptionAndRuleNameSanitizationRegex.Replace(rulePath, string.Empty); // hash defaultHashing = entityPathOrName => MD5DeterministicNameBuilder.Build(entityPathOrName); }
public ThrowOnFailedValidation(ReadOnlySettings settings) { this.settings = settings; // validators defaultQueuePathValidation = queuePath => { var validationResult = new ValidationResult(); if (!queueAndTopicNameRegex.IsMatch(queuePath)) { validationResult.AddErrorForInvalidCharacters($"Queue path {queuePath} contains illegal characters. Legal characters should match the following regex: `{queuePath}`."); } var maximumLength = settings.GetOrDefault <int>(WellKnownConfigurationKeys.Topology.Addressing.Sanitization.QueuePathMaximumLength); if (queuePath.Length > maximumLength) { validationResult.AddErrorForInvalidLenth($"Queue path `{queuePath}` exceeds maximum length of {maximumLength} characters."); } return(validationResult); }; defaultTopicPathValidation = topicPath => { var validationResult = new ValidationResult(); if (!queueAndTopicNameRegex.IsMatch(topicPath)) { validationResult.AddErrorForInvalidCharacters($"Topic path {topicPath} contains illegal characters. Legal characters should match the following regex: `{topicPath}`."); } var maximumLength = settings.GetOrDefault <int>(WellKnownConfigurationKeys.Topology.Addressing.Sanitization.TopicPathMaximumLength); if (topicPath.Length > maximumLength) { validationResult.AddErrorForInvalidLenth($"Topic path `{topicPath}` exceeds maximum length of {maximumLength} characters."); } return(validationResult); }; defaultSubscriptionNameValidation = subscriptionName => { var validationResult = new ValidationResult(); if (!subscriptionAndRuleNameRegex.IsMatch(subscriptionName)) { validationResult.AddErrorForInvalidCharacters($"Subscription name {subscriptionName} contains illegal characters. Legal characters should match the following regex: `{subscriptionName}`."); } var maximumLength = settings.GetOrDefault <int>(WellKnownConfigurationKeys.Topology.Addressing.Sanitization.SubscriptionNameMaximumLength); if (subscriptionName.Length > maximumLength) { validationResult.AddErrorForInvalidLenth($"Subscription name `{subscriptionName}` exceeds maximum length of {maximumLength} characters."); } return(validationResult); }; defaultRuleNameValidation = ruleName => { var validationResult = new ValidationResult(); if (!subscriptionAndRuleNameRegex.IsMatch(ruleName)) { validationResult.AddErrorForInvalidCharacters($"Rule name {ruleName} contains illegal characters. Legal characters should match the following regex: `{ruleName}`."); } var maximumLength = settings.GetOrDefault <int>(WellKnownConfigurationKeys.Topology.Addressing.Sanitization.RuleNameMaximumLength); if (ruleName.Length > maximumLength) { validationResult.AddErrorForInvalidLenth($"Rule name `{ruleName}` exceeds maximum length of {maximumLength} characters."); } return(validationResult); }; }