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 }