Skip to content

Commit

Permalink
refactor: update parseAddressBalance function
Browse files Browse the repository at this point in the history
  • Loading branch information
Monika-Bitfly committed Feb 11, 2025
1 parent dae278c commit e39a9c2
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 8 deletions.
5 changes: 4 additions & 1 deletion backend/pkg/commons/rpc/erigon.go
Original file line number Diff line number Diff line change
Expand Up @@ -421,7 +421,10 @@ func (client *ErigonClient) GetBalancesForAddress(address string, tokenStr []str
return nil, err
}

res := parseAddressBalance(tokens, address, balancesInt)
res, err := parseAddressBalance(tokens, address, balancesInt)
if err != nil {
return nil, err
}

return res, nil
}
Expand Down
5 changes: 4 additions & 1 deletion backend/pkg/commons/rpc/geth.go
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,10 @@ func (client *GethClient) GetBalancesForAddress(address string, tokenStr []strin
return nil, err
}

res := parseAddressBalance(tokens, address, balancesInt)
res, err := parseAddressBalance(tokens, address, balancesInt)
if err != nil {
return nil, err
}

return res, nil
}
Expand Down
44 changes: 38 additions & 6 deletions backend/pkg/commons/rpc/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,14 +126,46 @@ func getRateFromOracle(oracle *oneinchoracle.OneinchOracle, token []byte, ret *t
return nil
}

func parseAddressBalance(tokens []common.Address, address string, balances []*big.Int) []*types.Eth1AddressBalance {
func parseAddressBalance(tokens []common.Address, address string, balances []*big.Int) ([]*types.Eth1AddressBalance, error) {
if len(tokens) == 0 || len(balances) == 0 {
return nil, fmt.Errorf("tokens or balances slice is empty")
}
if len(tokens) != len(balances) {
return nil, fmt.Errorf("tokens and balances slices have mismatched lengths")
}

if address == "" {
return nil, fmt.Errorf("address is empty")
}
addrBytes := common.FromHex(address)
if len(addrBytes) == 0 {
return nil, fmt.Errorf("invalid address format")
}

res := make([]*types.Eth1AddressBalance, len(tokens))
for tokenIdx := range tokens {
for tokenIdx, token := range tokens {
if token == (common.Address{}) {
return nil, fmt.Errorf("token at index %d is empty", tokenIdx)
}
tokenBytes := token.Bytes()
if len(tokenBytes) == 0 {
return nil, fmt.Errorf("invalid token format at index %d", tokenIdx)
}

if balances[tokenIdx] == nil {
return nil, fmt.Errorf("balance at index %d is nil", tokenIdx)
}
balanceBytes := balances[tokenIdx].Bytes()
if len(balanceBytes) == 0 {
return nil, fmt.Errorf("invalid balance format at index %d", tokenIdx)
}

res[tokenIdx] = &types.Eth1AddressBalance{
Address: common.FromHex(address),
Token: common.FromHex(string(tokens[tokenIdx].Bytes())),
Balance: balances[tokenIdx].Bytes(),
Address: addrBytes,
Token: tokenBytes,
Balance: balanceBytes,
}
}
return res

return res, nil
}

0 comments on commit e39a9c2

Please sign in to comment.