in api/internal/core/entity/format.go [61:113]
func NodesFormat(obj interface{}) interface{} {
nodes := make([]*Node, 0)
switch objType := obj.(type) {
case map[string]float64:
log.Infof("nodes type: %v", objType)
value := obj.(map[string]float64)
for key, val := range value {
node, err := mapKV2Node(key, val)
if err != nil {
return obj
}
nodes = append(nodes, node)
}
return nodes
case map[string]interface{}:
log.Infof("nodes type: %v", objType)
value := obj.(map[string]interface{})
for key, val := range value {
node, err := mapKV2Node(key, val.(float64))
if err != nil {
return obj
}
nodes = append(nodes, node)
}
return nodes
case []*Node:
log.Infof("nodes type: %v", objType)
return obj
case []interface{}:
log.Infof("nodes type []interface{}: %v", objType)
list := obj.([]interface{})
for _, v := range list {
val := v.(map[string]interface{})
node := &Node{
Host: val["host"].(string),
Port: int(val["port"].(float64)),
Weight: int(val["weight"].(float64)),
}
if _, ok := val["priority"]; ok {
node.Priority = int(val["priority"].(float64))
}
if _, ok := val["metadata"]; ok {
node.Metadata = val["metadata"].(map[string]interface{})
}
nodes = append(nodes, node)
}
return nodes
}
return obj
}