get.porter.sh/porter@v1.3.0/pkg/secrets/plugins/in-memory/store.go (about) 1 package inmemory 2 3 import ( 4 "context" 5 "errors" 6 "fmt" 7 8 "get.porter.sh/porter/pkg/secrets/plugins" 9 ) 10 11 var _ plugins.SecretsProtocol = &Store{} 12 13 // Store implements an in-memory secrets store for testing. 14 type Store struct { 15 Secrets map[string]map[string]string 16 } 17 18 func NewStore() *Store { 19 s := &Store{ 20 Secrets: make(map[string]map[string]string), 21 } 22 23 return s 24 } 25 26 func (s *Store) Resolve(ctx context.Context, keyName string, keyValue string) (string, error) { 27 _, ok := s.Secrets[keyName] 28 if !ok { 29 s.Secrets[keyName] = make(map[string]string, 1) 30 } 31 32 if keyName == "secret" { 33 value, ok := s.Secrets[keyName][keyValue] 34 if !ok { 35 return "", errors.New("secret not found") 36 } 37 38 return value, nil 39 } 40 41 return "", fmt.Errorf("unsupported keyName %s", keyName) 42 } 43 44 func (s *Store) Create(ctx context.Context, keyName string, keyValue string, value string) error { 45 _, ok := s.Secrets[keyName] 46 if !ok { 47 s.Secrets[keyName] = make(map[string]string, 1) 48 } 49 50 s.Secrets[keyName][keyValue] = value 51 return nil 52 }