github.com/Ingenico-ePayments/connect-sdk-go@v0.0.0-20240318153750-1f8cd329b9c9/logging/obfuscation/HeaderObfuscator.go (about) 1 package obfuscation 2 3 import "strings" 4 5 // HeaderObfuscator can be used to obfuscate headers. 6 type HeaderObfuscator struct { 7 rules ruleMap 8 } 9 10 // ObfuscateHeader obfuscates the value for the given header as necessary. 11 func (o HeaderObfuscator) ObfuscateHeader(name, value string) string { 12 name = strings.ToLower(name) 13 return o.rules.obfuscateValue(name, value) 14 } 15 16 // NewHeaderObfuscator returns a header obfuscator. 17 // This will contain some pre-defined obfuscation rules, as well as any provided custom rules. 18 func NewHeaderObfuscator(customRules map[string]Rule) HeaderObfuscator { 19 rules := ruleMap{ 20 "authorization": FixedLength(8), 21 "www-authenticate": FixedLength(8), 22 "proxy-authenticate": FixedLength(8), 23 "proxy-authorization": FixedLength(8), 24 "x-gcs-authentication-token": FixedLength(8), 25 "x-gcs-callerpassword": FixedLength(8), 26 } 27 28 for name, rule := range customRules { 29 name = strings.ToLower(name) 30 rules[name] = rule 31 } 32 33 return HeaderObfuscator{rules} 34 } 35 36 var defaultHeaderObfuscator = NewHeaderObfuscator(ruleMap{}) 37 38 // DefaultHeaderObfuscator returns a default header obfuscator. 39 // This will be equivalent to calling NewHeaderObfuscator with an empty rule map. 40 func DefaultHeaderObfuscator() HeaderObfuscator { 41 return defaultHeaderObfuscator 42 }