-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlevel.go
83 lines (65 loc) · 1.57 KB
/
level.go
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
77
78
79
80
81
82
83
package minimizers
import (
"bytes"
"encoding/json"
"log"
)
type MinimizationLevel int
const (
// No data minimization
MinimizationNone MinimizationLevel = iota
// Coarse-grained data minimization
MinimizationCoarse
// Fine-grained data minimization
MinimizationFine
// Data anonymization
MinimizationAnonymize
// Data tokenization
MinimizationTokenize
// Data masking
MinimizationMask
)
var LevelStringMap = map[MinimizationLevel]string {
MinimizationNone: "none",
MinimizationCoarse: "coarse",
MinimizationFine: "fine",
MinimizationAnonymize: "anonymize",
MinimizationTokenize: "tokenize",
MinimizationMask: "mask",
}
var StringLevelMap = map[string]MinimizationLevel {
"none": MinimizationNone,
"coarse": MinimizationCoarse,
"fine": MinimizationFine,
"anonymize": MinimizationAnonymize,
"tokenize": MinimizationTokenize,
"mask": MinimizationMask,
}
func LevelFromString(levelString string) MinimizationLevel {
if level, ok := StringLevelMap[levelString]; ok {
return level
}
return MinimizationNone
}
func (l MinimizationLevel) MarshalJSON() ([]byte, error) {
buf := bytes.NewBufferString(`"`)
buf.WriteString(l.String())
buf.WriteString(`"`)
return buf.Bytes(), nil
}
func (l *MinimizationLevel) UnmarshalJSON(b []byte) error {
var levelString string
err := json.Unmarshal(b, &levelString)
if err != nil {
return err
}
*l = LevelFromString(levelString)
return nil
}
func (l MinimizationLevel) String() string {
if name, ok := LevelStringMap[l]; ok {
return name
}
log.Printf("Unknown minimization level specified (%d)\n", l)
return ""
}