41 lines
527 B
Go
41 lines
527 B
Go
|
package acl
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
type Action int
|
||
|
|
||
|
const (
|
||
|
Deny Action = iota
|
||
|
Auth
|
||
|
Public
|
||
|
)
|
||
|
|
||
|
var actions = [...]string{
|
||
|
"deny",
|
||
|
"auth",
|
||
|
"public",
|
||
|
}
|
||
|
|
||
|
func (a Action) String() string {
|
||
|
return actions[a]
|
||
|
}
|
||
|
|
||
|
func (a *Action) UnmarshalYAML(unmarshal func(any) error) error {
|
||
|
var val string
|
||
|
if err := unmarshal(&val); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
val = strings.ToLower(val)
|
||
|
|
||
|
for i, s := range actions {
|
||
|
if val == s {
|
||
|
*a = (Action)(i)
|
||
|
return nil
|
||
|
}
|
||
|
}
|
||
|
return fmt.Errorf("Unknown action type: %s", val)
|
||
|
}
|