in mask/url.go [12:57]
func URL(originalURL string) string {
u, err := url.Parse(originalURL)
if err != nil {
return "<invalid URL>"
}
if u.User != nil {
username := u.User.Username()
_, hasPass := u.User.Password()
switch {
case username != "" && hasPass:
u.User = url.UserPassword("FILTERED", "FILTERED")
case username != "" && !hasPass:
u.User = url.User("FILTERED")
}
}
redactionBytes := []byte(RedactionString)
buf := bytes.NewBuffer(make([]byte, 0, len(originalURL)))
for i, queryPart := range bytes.Split([]byte(u.RawQuery), []byte("&")) {
if i != 0 {
buf.WriteByte('&')
}
splitParam := bytes.SplitN(queryPart, []byte("="), 2)
if len(splitParam) == 2 {
buf.Write(splitParam[0])
buf.WriteByte('=')
if parameterMatcher.Match(splitParam[0]) {
buf.Write(redactionBytes)
} else {
buf.Write(splitParam[1])
}
} else {
buf.Write(queryPart)
}
}
u.RawQuery = buf.String()
return u.String()
}