...
1 package util
2
3 import (
4 "net/url"
5 )
6
7
8 func MaskURLQuery(originalURL string, keysToMask ...string) (string, error) {
9 parsedURL, err := url.Parse(originalURL)
10 if err != nil {
11 return "", err
12 }
13
14 queryParams := parsedURL.Query()
15 for _, key := range keysToMask {
16 if value, exists := queryParams[key]; exists {
17 for i := range value {
18 queryParams[key][i] = maskValue(value[i])
19 }
20 }
21 }
22
23 parsedURL.RawQuery = queryParams.Encode()
24
25 return parsedURL.String(), nil
26 }
27
28 func maskValue(value string) string {
29 const defaultMask = "xxxxx"
30
31 if len(value) < 5 {
32 return defaultMask
33 }
34
35 maskLength := len(value) - 5
36 return defaultMask + value[maskLength:]
37 }
38
View as plain text