-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathredact_example_test.go
More file actions
76 lines (64 loc) · 1.36 KB
/
Copy pathredact_example_test.go
File metadata and controls
76 lines (64 loc) · 1.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package sensitive_test
import (
"log"
"strings"
sensitive "github.com/ln80/struct-sensitive"
)
// Example of a basic usage
func ExampleRedact() {
type Profile struct {
Email string `sensitive:"data"`
Fullname string `sensitive:"data"`
Role string
}
p := Profile{
Email: "eric.prosacco@example.com",
Fullname: "Eric Prosacco",
Role: "Teacher",
}
err := sensitive.Redact(&p)
if err != nil {
log.Fatal(err)
}
print(p)
// Output:
// Profile{
// Email: "*************************",
// Fullname: "*************",
// Role: "Teacher",
// }
}
// Example of a custom Redact function
func ExampleRedact_second() {
type Profile struct {
Email string `sensitive:"data,kind=email"`
Fullname string `sensitive:"data,kind=name"`
Role string
}
p := Profile{
Email: "eric.prosacco@example.com",
Fullname: "Eric Prosacco",
Role: "Teacher",
}
err := sensitive.Redact(&p, func(rc *sensitive.RedactConfig) {
rc.RedactFunc = func(fr sensitive.FieldReplace, val string) (string, error) {
switch fr.Kind {
case "email":
return "ghost@unknown.net", nil
case "name":
return "Ghost", nil
}
return strings.Repeat("*", len(val)), nil
}
})
if err != nil {
log.Fatal(err)
}
print(p)
// Output:
// Profile{
// Email: "ghost@unknown.net",
// Fullname: "Ghost",
// Role: "Teacher",
// }
}