1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
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
}
|