package vault
import (
"context"
"fmt"
"strings"
vault "github.com/hashicorp/vault/api"
)
type secretStore interface {
Read(ctx context.Context, args *Arguments) (*vault.Secret, error)
}
type kvStore struct{ c *vault.Client }
func (ks *kvStore) Read(ctx context.Context, args *Arguments) (*vault.Secret, error) {
pathParts := strings.SplitN(args.Path, "/", 2)
if len(pathParts) != 2 {
return nil, fmt.Errorf("missing mount path in %q", args.Path)
}
kv := ks.c.KVv2(pathParts[0])
kvSecret, err := kv.Get(ctx, pathParts[1])
if err != nil {
return nil, err
}
kvSecret.Raw.Data = kvSecret.Data
return kvSecret.Raw, nil
}