Skip to content

Commit 258fccd

Browse files
committed
Add 'blockTag' query parameter
Signed-off-by: Matthew Whitehead <[email protected]>
1 parent ad7f4d1 commit 258fccd

File tree

4 files changed

+16
-7
lines changed

4 files changed

+16
-7
lines changed

internal/tmmsgs/en_api_descriptions.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,5 +61,6 @@ var (
6161
APIParamTXSigner = ffm("api.params.txSigner", "Return only transactions for a specific signing address, in reverse nonce order")
6262
APIParamTXPending = ffm("api.params.txPending", "Return only pending transactions, in reverse submission sequence (a 'sequenceId' is assigned to each transaction to determine its sequence")
6363
APIParamSortDirection = ffm("api.params.sortDirection", "Sort direction: 'asc'/'ascending' or 'desc'/'descending'")
64-
APIParamSignerAddress = ffm("api.params.signerAddress", "A signing address, for example to get the balance for")
64+
APIParamSignerAddress = ffm("api.params.signerAddress", "A signing address, for example to get the gas token balance for")
65+
APIParamBlocktag = ffm("api.params.blocktag", "The optional block tag to use when making a gas token balance query")
6566
)

pkg/fftm/address_management.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ import (
2424
"github.com/hyperledger/firefly-transaction-manager/pkg/ffcapi"
2525
)
2626

27-
func (m *manager) getLiveBalance(ctx context.Context, address string) (resp *apitypes.LiveAddressBalance, err error) {
27+
func (m *manager) getLiveBalance(ctx context.Context, address string, blockTag string) (resp *apitypes.LiveAddressBalance, err error) {
2828
resp = &apitypes.LiveAddressBalance{}
29-
balance, reason, err := m.connector.AddressBalance(ctx, &ffcapi.AddressBalanceRequest{Address: address})
29+
balance, reason, err := m.connector.AddressBalance(ctx, &ffcapi.AddressBalanceRequest{Address: address, BlockTag: blockTag})
3030
if err == nil {
3131
resp.AddressBalanceResponse = *balance
3232
} else {

pkg/fftm/address_management_test.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,13 @@ func TestBalanceOK(t *testing.T) {
3737
mca := m.connector.(*ffcapimocks.API)
3838
mca.On("AddressBalance", mock.Anything, mock.Anything).Return(&ffcapi.AddressBalanceResponse{Balance: fftypes.NewFFBigInt(999)}, ffcapi.ErrorReason(""), nil)
3939

40-
res, err := m.getLiveBalance(context.Background(), "0x4a8c8f1717570f9774652075e249ded38124d708")
40+
res, err := m.getLiveBalance(context.Background(), "0x4a8c8f1717570f9774652075e249ded38124d708", "latest")
41+
42+
assert.Nil(t, err)
43+
assert.NotNil(t, res)
44+
assert.Equal(t, int64(999), res.AddressBalanceResponse.Balance.Int64())
45+
46+
res, err = m.getLiveBalance(context.Background(), "0x4a8c8f1717570f9774652075e249ded38124d708", "")
4147

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

58-
res, err := m.getLiveBalance(context.Background(), "0x4a8c8f1717570f9774652075e249ded38124d708")
64+
res, err := m.getLiveBalance(context.Background(), "0x4a8c8f1717570f9774652075e249ded38124d708", "")
5965

6066
assert.Nil(t, res)
6167
assert.Regexp(t, "pop", err)

pkg/fftm/route_get_address_balance.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,15 @@ var getAddressBalance = func(m *manager) *ffapi.Route {
3232
PathParams: []*ffapi.PathParam{
3333
{Name: "address", Description: tmmsgs.APIParamSignerAddress},
3434
},
35-
QueryParams: nil,
35+
QueryParams: []*ffapi.QueryParam{
36+
{Name: "blocktag", Description: tmmsgs.APIParamBlocktag},
37+
},
3638
Description: tmmsgs.APIEndpointGetAddressBalance,
3739
JSONInputValue: nil,
3840
JSONOutputValue: func() interface{} { return &apitypes.LiveAddressBalance{} },
3941
JSONOutputCodes: []int{http.StatusOK},
4042
JSONHandler: func(r *ffapi.APIRequest) (output interface{}, err error) {
41-
return m.getLiveBalance(r.Req.Context(), r.PP["address"])
43+
return m.getLiveBalance(r.Req.Context(), r.PP["address"], r.QP["blocktag"])
4244
},
4345
}
4446
}

0 commit comments

Comments
 (0)