...
1
21
22 package jwt
23
24 import "time"
25
26
27 type Mapper interface {
28 ToMap() map[string]interface{}
29 Add(key string, value interface{})
30 Get(key string) interface{}
31 }
32
33
34 func ToString(i interface{}) string {
35 if i == nil {
36 return ""
37 }
38
39 if s, ok := i.(string); ok {
40 return s
41 }
42
43 if sl, ok := i.([]string); ok {
44 if len(sl) == 1 {
45 return sl[0]
46 }
47 }
48
49 return ""
50 }
51
52
53 func ToTime(i interface{}) time.Time {
54 if i == nil {
55 return time.Time{}
56 }
57
58 if t, ok := i.(int64); ok {
59 return time.Unix(t, 0).UTC()
60 } else if t, ok := i.(float64); ok {
61 return time.Unix(int64(t), 0).UTC()
62 } else if t, ok := i.(time.Time); ok {
63 return t
64 }
65
66 return time.Time{}
67 }
68
69
70 func Filter(elements map[string]interface{}, keys ...string) map[string]interface{} {
71 var keyIdx = make(map[string]bool)
72 var result = make(map[string]interface{})
73
74 for _, key := range keys {
75 keyIdx[key] = true
76 }
77
78 for k, e := range elements {
79 if _, ok := keyIdx[k]; !ok {
80 result[k] = e
81 }
82 }
83
84 return result
85 }
86
87
88 func Copy(elements map[string]interface{}) (result map[string]interface{}) {
89 result = make(map[string]interface{}, len(elements))
90 for k, v := range elements {
91 result[k] = v
92 }
93
94 return result
95 }
96
View as plain text