-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathparams.go
58 lines (47 loc) · 1.14 KB
/
params.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
package werror
import (
wparams "github.com/palantir/witchcraft-go-params"
)
type Param interface {
apply(*werror)
}
type param func(*werror)
func (p param) apply(e *werror) {
p(e)
}
func SafeParam(key string, val interface{}) Param {
return SafeParams(map[string]interface{}{key: val})
}
func SafeParams(vals map[string]interface{}) Param {
return paramsHelper(vals, true)
}
func UnsafeParam(key string, val interface{}) Param {
return UnsafeParams(map[string]interface{}{key: val})
}
func UnsafeParams(vals map[string]interface{}) Param {
return paramsHelper(vals, false)
}
func paramsHelper(vals map[string]interface{}, safe bool) Param {
return param(func(z *werror) {
for k, v := range vals {
z.params[k] = paramValue{
safe: safe,
value: v,
}
}
})
}
func SafeAndUnsafeParams(safe, unsafe map[string]interface{}) Param {
return param(func(z *werror) {
SafeParams(safe).apply(z)
UnsafeParams(unsafe).apply(z)
})
}
func Params(object wparams.ParamStorer) Param {
return param(func(z *werror) {
if object != nil {
SafeParams(object.SafeParams()).apply(z)
UnsafeParams(object.UnsafeParams()).apply(z)
}
})
}