Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 19 additions & 19 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,33 +6,33 @@ jobs:
name: lint
runs-on: ubuntu-latest
steps:
- uses: actions/setup-go@v3
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.19'
- uses: actions/checkout@v3
go-version: '1.23'
cache: false
- name: golangci-lint
uses: golangci/golangci-lint-action@v3
uses: golangci/golangci-lint-action@v6
with:
version: v1.51.2
args: --timeout=3m
version: v1.60.3
args: --timeout=5m

test:
name: Test
runs-on: ubuntu-latest
steps:
- name: install Go
uses: actions/setup-go@v2
with:
go-version: 1.19.x
- name: checkout code
uses: actions/checkout@v2
- uses: actions/cache@v2
- name: Checkout code
uses: actions/checkout@v4

- name: Install Go
uses: actions/setup-go@v5
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: golang tests
go-version: 1.23.x
- name: Golang tests
env:
GO111MODULE: on
run: |
go mod download
go test ./...
go test -p 8 ./...
6 changes: 3 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/dipdup-io/starknet-go-api

go 1.21
go 1.23.2

require (
github.com/dipdup-net/indexer-sdk v0.0.0-20230614153224-11cee5bf9248
Expand All @@ -19,7 +19,7 @@ require (
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.16 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
golang.org/x/crypto v0.17.0 // indirect
golang.org/x/sys v0.15.0 // indirect
golang.org/x/crypto v0.31.0 // indirect
golang.org/x/sys v0.28.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
8 changes: 4 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,13 @@ github.com/tfkhsr/jsonschema v0.0.0-20180218143334-273afdd5a88c h1:FiJHojQ8AwCcl
github.com/tfkhsr/jsonschema v0.0.0-20180218143334-273afdd5a88c/go.mod h1:zhGMpmE6P0Eml0MgFIc5TljSWlr/hbNSmig8KiVEodo=
github.com/wealdtech/go-merkletree v1.0.1-0.20230205101955-ec7a95ea11ca h1:oK35INPN4CiubFw7ZPQkbxm2AsSU6Tjeb9YhciZnvIM=
github.com/wealdtech/go-merkletree v1.0.1-0.20230205101955-ec7a95ea11ca/go.mod h1:bM9mDSjsti+gkjl8FjovMoUH3MPR5bwJ3+ucaYFY0Jk=
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
Expand Down
24 changes: 10 additions & 14 deletions pkg/abi/data.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,33 +77,29 @@ type FunctionItem struct {
type EventItem struct {
Type

Data []Type `json:"data"`
Keys []Type `json:"keys"`
Inputs []Type `json:"inputs"`
Members []Type `json:"members,omitempty"`
Data []Type `json:"data"`
Keys []Type `json:"keys"`
Inputs []Type `json:"inputs"`
}

type members struct {
Members []Type `json:"members"`
type Members struct {
}

func (item *EventItem) UnmarshalJSON(data []byte) error {
type buf EventItem
if err := json.Unmarshal(data, (*buf)(item)); err != nil {
return err
}
if item.Data == nil && item.Keys == nil {
var m members
if err := json.Unmarshal(data, &m); err != nil {
return err
}
if item.Kind == StructType {
item.Data = make([]Type, 0)
item.Keys = make([]Type, 0)
for i := range m.Members {
switch m.Members[i].Kind {
for i := range item.Members {
switch item.Members[i].Kind {
case "data":
item.Data = append(item.Data, m.Members[i])
item.Data = append(item.Data, item.Members[i])
case "keys":
item.Keys = append(item.Keys, m.Members[i])
item.Keys = append(item.Keys, item.Members[i])
}
}
}
Expand Down
15 changes: 15 additions & 0 deletions pkg/abi/data_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,21 @@ func TestEventItem_UnmarshalJSON(t *testing.T) {
Type: "event",
Kind: "struct",
},
Members: []Type{
{
Kind: "data",
Name: "from",
Type: "core::starknet::contract_address::ContractAddress",
}, {
Kind: "data",
Name: "to",
Type: "core::starknet::contract_address::ContractAddress",
}, {
Kind: "data",
Name: "value",
Type: "core::integer::u256",
},
},
Data: []Type{
{
Kind: "data",
Expand Down
9 changes: 8 additions & 1 deletion pkg/abi/decode.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,16 @@ func DecodeEventData(data []string, typ EventItem, structs map[string]*StructIte
tail = data
err error

eventData = append(typ.Keys, typ.Data...)
eventData []Type
)

if len(typ.Members) > 0 {
eventData = typ.Members
} else {
eventData = append(eventData, typ.Keys...)
eventData = append(eventData, typ.Data...)
}

for i := range eventData {
tail, err = decodeItem(tail, eventData[i], structs, enums, result)
if err != nil {
Expand Down
91 changes: 91 additions & 0 deletions pkg/abi/decode_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1070,3 +1070,94 @@ func TestDecodeFunctionCallData(t *testing.T) {
})
}
}

func TestDecodeEventData(t *testing.T) {
type args struct {
data []string
typ EventItem
structs map[string]*StructItem
enums map[string]*EnumItem
}
tests := []struct {
name string
args args
want map[string]any
wantErr bool
}{
{
name: "test 1",
args: args{
data: []string{
"0x2a",
"0x1a62446e05ee60540d94b2e731ed037a1798065f9b8e719e293180b493b91f7",
},
typ: EventItem{
Type: Type{
Name: "hello::HelloStarknet::BalanceIncreased",
Type: "event",
Kind: "struct",
},
Members: []Type{
{
Name: "amount",
Type: "core::felt252",
Kind: "data",
}, {
Name: "by",
Type: "core::starknet::contract_address::ContractAddress",
Kind: "key",
},
},
Data: []Type{
{
Name: "amount",
Type: "core::felt252",
Kind: "data",
},
},
Keys: []Type{
{
Name: "by",
Type: "core::starknet::contract_address::ContractAddress",
Kind: "key",
},
},
},
structs: map[string]*StructItem{
"hello::HelloStarknet::BalanceIncreased": {
Members: []Member{
{
Type: Type{
Name: "amount",
Type: "core::felt252",
Kind: "data",
},
}, {
Type: Type{
Name: "by",
Type: "core::starknet::contract_address::ContractAddress",
Kind: "key",
},
},
},
},
},
enums: map[string]*EnumItem{},
},
want: map[string]any{
"amount": "0x2a",
"by": "0x1a62446e05ee60540d94b2e731ed037a1798065f9b8e719e293180b493b91f7",
},
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := DecodeEventData(tt.args.data, tt.args.typ, tt.args.structs, tt.args.enums)
require.Equal(t, tt.wantErr, err != nil)
if !tt.wantErr {
require.Equal(t, tt.want, got)
}
})
}
}
2 changes: 1 addition & 1 deletion pkg/rpc/syncing.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func (s *Syncing) UnmarshalJSON(data []byte) error {
return nil
}

// Syncing - Returns an object about the sync status, or false if the node is not synching
// Syncing - Returns an object about the sync status, or false if the node is not syncing
func (api API) Syncing(ctx context.Context, opts ...RequestOption) (*Response[Syncing], error) {
request := api.prepareRequest("starknet_syncing", []any{}, opts...)

Expand Down
Loading