Skip to content

Commit

Permalink
Add 'blockTag' query parameter
Browse files Browse the repository at this point in the history
Signed-off-by: Matthew Whitehead <[email protected]>
  • Loading branch information
matthew1001 committed Dec 20, 2022
1 parent ad7f4d1 commit 258fccd
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 7 deletions.
3 changes: 2 additions & 1 deletion internal/tmmsgs/en_api_descriptions.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,5 +61,6 @@ var (
APIParamTXSigner = ffm("api.params.txSigner", "Return only transactions for a specific signing address, in reverse nonce order")
APIParamTXPending = ffm("api.params.txPending", "Return only pending transactions, in reverse submission sequence (a 'sequenceId' is assigned to each transaction to determine its sequence")
APIParamSortDirection = ffm("api.params.sortDirection", "Sort direction: 'asc'/'ascending' or 'desc'/'descending'")
APIParamSignerAddress = ffm("api.params.signerAddress", "A signing address, for example to get the balance for")
APIParamSignerAddress = ffm("api.params.signerAddress", "A signing address, for example to get the gas token balance for")
APIParamBlocktag = ffm("api.params.blocktag", "The optional block tag to use when making a gas token balance query")
)
4 changes: 2 additions & 2 deletions pkg/fftm/address_management.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ import (
"github.com/hyperledger/firefly-transaction-manager/pkg/ffcapi"
)

func (m *manager) getLiveBalance(ctx context.Context, address string) (resp *apitypes.LiveAddressBalance, err error) {
func (m *manager) getLiveBalance(ctx context.Context, address string, blockTag string) (resp *apitypes.LiveAddressBalance, err error) {
resp = &apitypes.LiveAddressBalance{}
balance, reason, err := m.connector.AddressBalance(ctx, &ffcapi.AddressBalanceRequest{Address: address})
balance, reason, err := m.connector.AddressBalance(ctx, &ffcapi.AddressBalanceRequest{Address: address, BlockTag: blockTag})
if err == nil {
resp.AddressBalanceResponse = *balance
} else {
Expand Down
10 changes: 8 additions & 2 deletions pkg/fftm/address_management_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,13 @@ func TestBalanceOK(t *testing.T) {
mca := m.connector.(*ffcapimocks.API)
mca.On("AddressBalance", mock.Anything, mock.Anything).Return(&ffcapi.AddressBalanceResponse{Balance: fftypes.NewFFBigInt(999)}, ffcapi.ErrorReason(""), nil)

res, err := m.getLiveBalance(context.Background(), "0x4a8c8f1717570f9774652075e249ded38124d708")
res, err := m.getLiveBalance(context.Background(), "0x4a8c8f1717570f9774652075e249ded38124d708", "latest")

assert.Nil(t, err)
assert.NotNil(t, res)
assert.Equal(t, int64(999), res.AddressBalanceResponse.Balance.Int64())

res, err = m.getLiveBalance(context.Background(), "0x4a8c8f1717570f9774652075e249ded38124d708", "")

assert.Nil(t, err)
assert.NotNil(t, res)
Expand All @@ -55,7 +61,7 @@ func TestBalanceFail(t *testing.T) {
mca := m.connector.(*ffcapimocks.API)
mca.On("AddressBalance", mock.Anything, mock.Anything).Return(nil, ffcapi.ErrorReason(""), fmt.Errorf("pop"))

res, err := m.getLiveBalance(context.Background(), "0x4a8c8f1717570f9774652075e249ded38124d708")
res, err := m.getLiveBalance(context.Background(), "0x4a8c8f1717570f9774652075e249ded38124d708", "")

assert.Nil(t, res)
assert.Regexp(t, "pop", err)
Expand Down
6 changes: 4 additions & 2 deletions pkg/fftm/route_get_address_balance.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,15 @@ var getAddressBalance = func(m *manager) *ffapi.Route {
PathParams: []*ffapi.PathParam{
{Name: "address", Description: tmmsgs.APIParamSignerAddress},
},
QueryParams: nil,
QueryParams: []*ffapi.QueryParam{
{Name: "blocktag", Description: tmmsgs.APIParamBlocktag},
},
Description: tmmsgs.APIEndpointGetAddressBalance,
JSONInputValue: nil,
JSONOutputValue: func() interface{} { return &apitypes.LiveAddressBalance{} },
JSONOutputCodes: []int{http.StatusOK},
JSONHandler: func(r *ffapi.APIRequest) (output interface{}, err error) {
return m.getLiveBalance(r.Req.Context(), r.PP["address"])
return m.getLiveBalance(r.Req.Context(), r.PP["address"], r.QP["blocktag"])
},
}
}

0 comments on commit 258fccd

Please sign in to comment.