22using System ;
33using System . Collections . Generic ;
44using System . Collections . Immutable ;
5+ using System . Text . RegularExpressions ;
56
67namespace StackExchange . Metrics
78{
@@ -10,9 +11,20 @@ namespace StackExchange.Metrics
1011 /// </summary>
1112 public class MetricSourceOptions : IOptions < MetricSourceOptions >
1213 {
14+
15+ private static string SanitizeTag ( string value )
16+ {
17+ if ( string . IsNullOrEmpty ( value ) ) return value ;
18+ return s_tagValueSanitizer . Replace ( value , "" ) . ToLowerInvariant ( ) ;
19+ }
20+ private static readonly Regex s_tagValueSanitizer = new Regex ( @"[^-\w./]" , RegexOptions . Compiled ) ;
1321 private static readonly NameTransformerDelegate s_defaultMetricNameTransformer = NameTransformers . Combine ( NameTransformers . CamelToLowerSnakeCase , NameTransformers . Sanitize ) ;
1422 private static readonly NameTransformerDelegate s_defaultTagNameTransformer = NameTransformers . Combine ( NameTransformers . CamelToLowerSnakeCase , NameTransformers . Sanitize ) ;
15- private static readonly TagValueTransformerDelegate s_defaultTagValueTransformer = ( _ , value ) => value . ToString ( ) . ToLowerInvariant ( ) ;
23+ private static readonly TagValueTransformerDelegate s_defaultTagValueTransformer = ( _ , value ) =>
24+ {
25+ if ( value == null ) return null ;
26+ return s_tagValueSanitizer . Replace ( value . ToString ( ) , "" ) . ToLowerInvariant ( ) ;
27+ } ;
1628 private static readonly ValidationDelegate s_defaultMetricNameValidator = MetricValidation . IsValidMetricName ;
1729 private static readonly ValidationDelegate s_defaultTagNameValidator = MetricValidation . IsValidTagName ;
1830 private static readonly ValidationDelegate s_defaultTagValueValidator = MetricValidation . IsValidTagValue ;
0 commit comments