94 lines
1.8 KiB
Go
94 lines
1.8 KiB
Go
package api
|
|
|
|
import (
|
|
"errors"
|
|
)
|
|
|
|
// ErrUnknownKey is returned when a key does not exist using a getter
|
|
var ErrUnknownKey = errors.New("key does not exist")
|
|
|
|
// ErrInvalidType is returned when a typed getter tries to get a value that cannot be
|
|
// translated into the requested type
|
|
var ErrInvalidType = errors.New("invalid type")
|
|
|
|
// Has checks whether a key exists in the arguments
|
|
func (i Arguments) Has(key string) bool {
|
|
_, exists := i[key]
|
|
return exists
|
|
}
|
|
|
|
// Get extracts a parameter as an interface{} value
|
|
func (i Arguments) Get(key string) (interface{}, error) {
|
|
val, ok := i[key]
|
|
if !ok {
|
|
return 0, ErrUnknownKey
|
|
}
|
|
|
|
return val, nil
|
|
}
|
|
|
|
// GetFloat extracts a parameter as a float value
|
|
func (i Arguments) GetFloat(key string) (float64, error) {
|
|
val, err := i.Get(key)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
floatval, ok := val.(float64)
|
|
if !ok {
|
|
return 0, ErrInvalidType
|
|
}
|
|
|
|
return floatval, nil
|
|
}
|
|
|
|
// GetInt extracts a parameter as an int value
|
|
func (i Arguments) GetInt(key string) (int, error) {
|
|
floatval, err := i.GetFloat(key)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
return int(floatval), nil
|
|
}
|
|
|
|
// GetUint extracts a parameter as an uint value
|
|
func (i Arguments) GetUint(key string) (uint, error) {
|
|
floatval, err := i.GetFloat(key)
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
return uint(floatval), nil
|
|
}
|
|
|
|
// GetString extracts a parameter as a string value
|
|
func (i Arguments) GetString(key string) (string, error) {
|
|
val, ok := i[key]
|
|
if !ok {
|
|
return "", ErrUnknownKey
|
|
}
|
|
|
|
stringval, ok := val.(string)
|
|
if !ok {
|
|
return "", ErrInvalidType
|
|
}
|
|
|
|
return stringval, nil
|
|
}
|
|
|
|
// GetBool extracts a parameter as a bool value
|
|
func (i Arguments) GetBool(key string) (bool, error) {
|
|
val, ok := i[key]
|
|
if !ok {
|
|
return false, ErrUnknownKey
|
|
}
|
|
|
|
boolval, ok := val.(bool)
|
|
if !ok {
|
|
return false, ErrInvalidType
|
|
}
|
|
|
|
return boolval, nil
|
|
}
|