Skip to content

Commit

Permalink
Handle get token prices for map params
Browse files Browse the repository at this point in the history
  • Loading branch information
ilija42 committed Feb 16, 2025
1 parent 3a27fc7 commit 051278a
Showing 1 changed file with 12 additions and 6 deletions.
18 changes: 12 additions & 6 deletions pkg/solana/chainreader/chain_reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -771,18 +771,24 @@ func (s *ContractReaderService) getPDAsForGetTokenPrices(params any, values read
if val.Kind() == reflect.Ptr {
val = val.Elem()
}
if val.Kind() != reflect.Struct {

var field reflect.Value
switch val.Kind() {
case reflect.Struct:
field = val.FieldByName("Tokens")
case reflect.Map:
field = val.MapIndex(reflect.ValueOf("Tokens"))
default:
return nil, fmt.Errorf(
"for contract %q read %q: expected `params` to be a struct, got %s",
values.contract, values.reads[0].readName, val.Kind(),
"for contract %q read %q: expected `params` to be a struct or map, got %q: %q",
values.contract, values.reads[0].readName, val.Kind(), val.String(),
)
}

field := val.FieldByName("Tokens")
if !field.IsValid() {
return nil, fmt.Errorf(
"for contract %q read %q: no field named 'Tokens' found in params",
values.contract, values.reads[0].readName,
"for contract %q read %q: no field named 'Tokens' found in kind: %q: %q",
values.contract, values.reads[0].readName, val.Kind(), val.String(),
)
}

Expand Down

0 comments on commit 051278a

Please sign in to comment.