@@ -28,24 +28,24 @@ type SecretResolver struct {
28
28
// TTL-based cache that exists to limit load on the database. It maps a secret
29
29
// type to the result from the database query.
30
30
//
31
- // database(cookie_key) -> projects/p/secrets/s/versions/1
31
+ // database(cookie_key) -> []string{ projects/p/secrets/s/versions/1}
32
32
//
33
- referencesCache * cache.Cache
33
+ referencesCache * cache.Cache [[] string ]
34
34
35
35
// valuesCache maps the references to their actual secret values. Since secret
36
36
// versions are immutable, this is a long-running cache.
37
37
//
38
- // projects/p/secrets/s/versions/1 -> abcd1234
38
+ // projects/p/secrets/s/versions/1 -> []byte( abcd1234)
39
39
//
40
- valuesCache * cache.Cache
40
+ valuesCache * cache.Cache [[] byte ]
41
41
}
42
42
43
43
// NewSecretResolver makes a new secret resolver using the provided database and
44
44
// secret manager instance.
45
45
func NewSecretResolver () * SecretResolver {
46
46
// These only return an error if the duration is < 0.
47
- referencesCache , _ := cache .New (60 * time .Second )
48
- valuesCache , _ := cache .New (120 * time .Minute )
47
+ referencesCache , _ := cache.New [[] string ] (60 * time .Second )
48
+ valuesCache , _ := cache.New [[] byte ] (120 * time .Minute )
49
49
50
50
return & SecretResolver {
51
51
referencesCache : referencesCache ,
@@ -77,7 +77,7 @@ func (r *SecretResolver) Resolve(ctx context.Context, db *Database, sm secrets.S
77
77
// ResolveReferences resolves the database references for the given secret type,
78
78
// handling caching where appropriate.
79
79
func (r * SecretResolver ) ResolveReferences (db * Database , typ SecretType ) ([]string , error ) {
80
- iface , err := r .referencesCache .WriteThruLookup (string (typ ), func () (interface {} , error ) {
80
+ list , err := r .referencesCache .WriteThruLookup (string (typ ), func () ([] string , error ) {
81
81
records , err := db .ListSecretsForType (typ )
82
82
if err != nil {
83
83
return nil , fmt .Errorf ("failed to list secrets for %s: %w" , typ , err )
@@ -92,17 +92,12 @@ func (r *SecretResolver) ResolveReferences(db *Database, typ SecretType) ([]stri
92
92
if err != nil {
93
93
return nil , err
94
94
}
95
-
96
- list , ok := iface .([]string )
97
- if ! ok {
98
- return nil , fmt .Errorf ("result for %s is not []string: %T" , typ , iface )
99
- }
100
95
return list , nil
101
96
}
102
97
103
98
// ResolveValue resolves a single secret, taking caching into account.
104
99
func (r * SecretResolver ) ResolveValue (ctx context.Context , sm secrets.SecretManager , ref string ) ([]byte , error ) {
105
- iface , err := r .valuesCache .WriteThruLookup (ref , func () (interface {} , error ) {
100
+ typ , err := r .valuesCache .WriteThruLookup (ref , func () ([] byte , error ) {
106
101
result , err := sm .GetSecretValue (ctx , ref )
107
102
if err != nil {
108
103
return nil , fmt .Errorf ("failed to get secret value %s: %w" , ref , err )
@@ -112,11 +107,6 @@ func (r *SecretResolver) ResolveValue(ctx context.Context, sm secrets.SecretMana
112
107
if err != nil {
113
108
return nil , err
114
109
}
115
-
116
- typ , ok := iface .([]byte )
117
- if ! ok {
118
- return nil , fmt .Errorf ("result for %s is not []byte: %T" , ref , iface )
119
- }
120
110
return typ , nil
121
111
}
122
112
0 commit comments