bindings: support simple types that implement fmt.Stringer interface

Signed-off-by: Nikolay Edigaryev <edigaryev@gmail.com>
This commit is contained in:
Nikolay Edigaryev 2021-02-18 01:09:21 +03:00
parent 9699e81a06
commit b3f9559c87

View file

@ -2,6 +2,7 @@ package util
import (
"errors"
"fmt"
"net/url"
"reflect"
"strconv"
@ -11,14 +12,25 @@ import (
)
func IsSimpleType(f reflect.Value) bool {
switch f.Interface().(type) {
case fmt.Stringer:
return true
}
switch f.Kind() {
case reflect.Bool, reflect.Int, reflect.Int64, reflect.Uint, reflect.Uint64, reflect.String:
return true
}
return false
}
func SimpleTypeToParam(f reflect.Value) string {
switch cast := f.Interface().(type) {
case fmt.Stringer:
return cast.String()
}
switch f.Kind() {
case reflect.Bool:
return strconv.FormatBool(f.Bool())
@ -31,6 +43,7 @@ func SimpleTypeToParam(f reflect.Value) string {
case reflect.String:
return f.String()
}
panic("the input parameter is not a simple type")
}