helpers/vault/auth_methods/data.go (40 lines of code) (raw):

package auth_methods import ( "fmt" ) type MissingRequiredConfigurationKeyError struct { key string } func NewMissingRequiredConfigurationKeyError(key string) *MissingRequiredConfigurationKeyError { return &MissingRequiredConfigurationKeyError{ key: key, } } func (e *MissingRequiredConfigurationKeyError) Error() string { return fmt.Sprintf("missing required auth method configuration key %q", e.key) } func (e *MissingRequiredConfigurationKeyError) Is(err error) bool { eerr, ok := err.(*MissingRequiredConfigurationKeyError) if !ok { return false } return eerr.key == e.key } type Data map[string]interface{} func (d Data) Filter(requiredFields []string, allowedFields []string) (Data, error) { for _, required := range requiredFields { _, ok := d[required] if !ok { return nil, NewMissingRequiredConfigurationKeyError(required) } } newData := make(Data) for _, allowed := range allowedFields { value, ok := d[allowed] if !ok { continue } newData[allowed] = value } return newData, nil }