diff --git a/client/client.go b/client/client.go index 7ccdf7f..e47d58c 100644 --- a/client/client.go +++ b/client/client.go @@ -15,6 +15,7 @@ import ( "reflect" "sort" "strconv" + "strings" "sync" "sync/atomic" "syscall" @@ -129,6 +130,9 @@ func unmarshal[T any](val *T, src map[string]string) { if argval.Elem().Field(i).CanInt() { num, _ := strconv.ParseInt(arg, 10, 0) argval.Elem().Field(i).SetInt(num) + } else if argval.Elem().Field(i).Kind() == reflect.Array || argval.Elem().Field(i).Kind() == reflect.Slice { + conv := strings.Split(arg, "\n") + argval.Elem().Field(i).Set(reflect.ValueOf(conv)) } else { argval.Elem().Field(i).SetString(arg) } diff --git a/server/operation.go b/server/operation.go index 35de2dc..3298b40 100644 --- a/server/operation.go +++ b/server/operation.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "reflect" + "strings" "sync" "repositories.action2quare.com/ayo/houston/shared" @@ -150,6 +151,12 @@ func marshal(argval reflect.Value, output map[string]string) map[string]string { marshal(argval.Field(i), output) } else if argval.Field(i).CanInt() { output[argval.Type().Field(i).Name] = fmt.Sprintf("%d", argval.Field(i).Int()) + } else if argval.Field(i).Kind() == reflect.Array || argval.Field(i).Kind() == reflect.Slice { + var conv []string + for i := 0; i < argval.Field(i).Len(); i++ { + conv = append(conv, argval.Field(i).Index(i).String()) + } + output[argval.Type().Field(i).Name] = strings.Join(conv, "\n") } else { output[argval.Type().Field(i).Name] = argval.Field(i).String() }