add getters for response.Arguments (getUint(), getInt(), getFloat(), get(), getString())

This commit is contained in:
Adrien Marquès 2018-10-04 17:05:10 +02:00
parent 8d3e678d73
commit 34ca1d991f
2 changed files with 83 additions and 1 deletions

View File

@ -35,7 +35,7 @@ func (e Error) Error() string {
} }
// MarshalJSON implements the json.Marshaler interface and is used // MarshalJSON implements the 'json.Marshaler' interface and is used
// to generate the JSON representation of the error data // to generate the JSON representation of the error data
func (e Error) MarshalJSON() ([]byte, error) { func (e Error) MarshalJSON() ([]byte, error) {

View File

@ -1,7 +1,89 @@
package response package response
import (
"errors"
)
var ErrUnknownKey = errors.New("key does not exist")
var ErrInvalidType = errors.New("invalid type")
// Has checks whether a key exists in the arguments // Has checks whether a key exists in the arguments
func (i Arguments) Has(key string) bool { func (i Arguments) Has(key string) bool {
_, exists := i[key] _, exists := i[key]
return exists 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
}