MCPcopy Create free account
hub / github.com/DNAProject/DNA / ParseNeoVMInvokeParams

Function ParseNeoVMInvokeParams

cmd/utils/params.go:355–401  ·  view source on GitHub ↗

ParseNeoVMInvokeParams parse params to []interface, rawParams is array of NeoVMInvokeParam

(rawParams []interface{})

Source from the content-addressed store, hash-verified

353
354//ParseNeoVMInvokeParams parse params to []interface, rawParams is array of NeoVMInvokeParam
355func ParseNeoVMInvokeParams(rawParams []interface{}) ([]interface{}, error) {
356 if len(rawParams) == 0 {
357 return nil, nil
358 }
359 params := make([]interface{}, 0)
360 for _, rawParam := range rawParams {
361 rawParamItem, ok := rawParam.(map[string]interface{})
362 if !ok {
363 return nil, fmt.Errorf("invalid param %v", rawParam)
364 }
365 for k, v := range rawParamItem {
366 rawParamItem[strings.ToLower(k)] = v
367 }
368 pType, ok := rawParamItem["type"]
369 if !ok {
370 return nil, fmt.Errorf("invalid param %v", rawParamItem)
371 }
372 pt, ok := pType.(string)
373 if !ok {
374 return nil, fmt.Errorf("invalid param %v", rawParamItem)
375 }
376 pValue, ok := rawParamItem["value"]
377 if !ok {
378 return nil, fmt.Errorf("invalid param %v", rawParamItem)
379 }
380 switch pv := pValue.(type) {
381 case string:
382 pv = strings.TrimSpace(pv)
383 param, err := parseRawParamValue(pt, pv)
384 if err != nil {
385 return nil, fmt.Errorf("Parse Param type:%s value:%s error:%s", pType, pv, err)
386 }
387 params = append(params, param)
388 case []interface{}:
389 ps, err := ParseNeoVMInvokeParams(pv)
390 if err != nil {
391 return nil, err
392 }
393 if len(ps) > 0 {
394 params = append(params, ps)
395 }
396 default:
397 return nil, fmt.Errorf("invalid param %v", rawParamItem)
398 }
399 }
400 return params, nil
401}

Callers

nothing calls this directly

Calls 2

parseRawParamValueFunction · 0.85
ErrorfMethod · 0.80

Tested by

no test coverage detected