/
parseNewAddresses.go
57 lines (53 loc) · 1.55 KB
/
parseNewAddresses.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package mandosjsonparse
import (
"errors"
"fmt"
mj "github.com/ElrondNetwork/arwen-wasm-vm/mandos-go/json/model"
oj "github.com/ElrondNetwork/arwen-wasm-vm/mandos-go/orderedjson"
)
func (p *Parser) processNewAddressMocks(namsRaw oj.OJsonObject) ([]*mj.NewAddressMock, error) {
namList, isList := namsRaw.(*oj.OJsonList)
if !isList {
return nil, errors.New("newAddresses list is not a list")
}
var namEntries []*mj.NewAddressMock
var err error
for _, namRaw := range namList.AsList() {
namMap, isMap := namRaw.(*oj.OJsonMap)
if !isMap {
return nil, errors.New("new address mock entry is not a map")
}
namEntry := mj.NewAddressMock{}
for _, kvp := range namMap.OrderedKV {
switch kvp.Key {
case "creatorAddress":
caStr, err := p.parseString(kvp.Value)
if err != nil {
return nil, fmt.Errorf("creatorAddress is not a json string: %w", err)
}
namEntry.CreatorAddress, err = p.parseAccountAddress(caStr)
if err != nil {
return nil, err
}
case "creatorNonce":
namEntry.CreatorNonce, err = p.processUint64(kvp.Value)
if err != nil {
return nil, errors.New("invalid creatorNonce")
}
case "newAddress":
naStr, err := p.parseString(kvp.Value)
if err != nil {
return nil, fmt.Errorf("newAddress is not a json string: %w", err)
}
namEntry.NewAddress, err = p.parseAccountAddress(naStr)
if err != nil {
return nil, err
}
default:
return nil, fmt.Errorf("unknown nam field: %s", kvp.Key)
}
}
namEntries = append(namEntries, &namEntry)
}
return namEntries, nil
}