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  }