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  }