github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/state/impl_app_secrets_storage.go (about)

     1  /*
     2   * Copyright (c) 2022-present unTill Pro, Ltd.
     3   */
     4  
     5  package state
     6  
     7  import (
     8  	"errors"
     9  	"fmt"
    10  	"io/fs"
    11  
    12  	"github.com/voedger/voedger/pkg/appdef"
    13  	"github.com/voedger/voedger/pkg/isecrets"
    14  	"github.com/voedger/voedger/pkg/istructs"
    15  )
    16  
    17  type appSecretsStorage struct {
    18  	secretReader isecrets.ISecretReader
    19  }
    20  
    21  func (s *appSecretsStorage) NewKeyBuilder(appdef.QName, istructs.IStateKeyBuilder) istructs.IStateKeyBuilder {
    22  	return newKeyBuilder(AppSecret, appdef.NullQName)
    23  }
    24  func (s *appSecretsStorage) Get(key istructs.IStateKeyBuilder) (value istructs.IStateValue, err error) {
    25  	k := key.(*keyBuilder)
    26  	if _, ok := k.data[Field_Secret]; !ok {
    27  		return nil, fmt.Errorf("'%s': %w", Field_Secret, ErrNotFound)
    28  	}
    29  	bb, e := s.secretReader.ReadSecret(k.data[Field_Secret].(string))
    30  	if errors.Is(e, fs.ErrNotExist) || errors.Is(e, isecrets.ErrSecretNameIsBlank) {
    31  		return nil, nil
    32  	}
    33  	if e != nil {
    34  		return nil, e
    35  	}
    36  	return &appSecretValue{
    37  		content: string(bb),
    38  	}, nil
    39  }