Skip to content

Commit 1d6a05f

Browse files
fix(nip47): omit empty fields in get_info response for nwc rust crate (#1750)
* fix(nip47): omit empty fields in get_info response for Rust client compatibility * fix(nip47): use nullable pointers in get_info response for rust client compatibility * fix: remove omitempty from pointer fields
1 parent 1953c72 commit 1d6a05f

File tree

2 files changed

+37
-37
lines changed

2 files changed

+37
-37
lines changed

nip47/controllers/get_info_controller.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@ import (
1313
)
1414

1515
type getInfoResponse struct {
16-
Alias string `json:"alias"`
17-
Color string `json:"color"`
18-
Pubkey string `json:"pubkey"`
19-
Network string `json:"network"`
20-
BlockHeight uint32 `json:"block_height"`
21-
BlockHash string `json:"block_hash"`
16+
Alias *string `json:"alias"`
17+
Color *string `json:"color"`
18+
Pubkey *string `json:"pubkey"`
19+
Network *string `json:"network"`
20+
BlockHeight *uint32 `json:"block_height"`
21+
BlockHash *string `json:"block_hash"`
2222
Methods []string `json:"methods"`
2323
Notifications []string `json:"notifications"`
2424
Metadata interface{} `json:"metadata,omitempty"`
25-
LightningAddress string `json:"lud16"`
25+
LightningAddress string `json:"lud16,omitempty"`
2626
}
2727

2828
func (controller *nip47Controller) HandleGetInfoEvent(ctx context.Context, nip47Request *models.Request, requestEventId uint, app *db.App, publishResponse publishFunc) {
@@ -64,12 +64,12 @@ func (controller *nip47Controller) HandleGetInfoEvent(ctx context.Context, nip47
6464
network = "mainnet"
6565
}
6666

67-
responsePayload.Alias = info.Alias
68-
responsePayload.Color = info.Color
69-
responsePayload.Pubkey = info.Pubkey
70-
responsePayload.Network = network
71-
responsePayload.BlockHeight = info.BlockHeight
72-
responsePayload.BlockHash = info.BlockHash
67+
responsePayload.Alias = &info.Alias
68+
responsePayload.Color = &info.Color
69+
responsePayload.Pubkey = &info.Pubkey
70+
responsePayload.Network = &network
71+
responsePayload.BlockHeight = &info.BlockHeight
72+
responsePayload.BlockHash = &info.BlockHash
7373

7474
if app != nil {
7575
metadata := map[string]interface{}{}

nip47/controllers/get_info_controller_test.go

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,12 @@ func TestHandleGetInfoEvent_NoPermission(t *testing.T) {
6060

6161
assert.Nil(t, publishedResponse.Error)
6262
nodeInfo := publishedResponse.Result.(*getInfoResponse)
63-
assert.Empty(t, nodeInfo.Alias)
64-
assert.Empty(t, nodeInfo.Color)
65-
assert.Empty(t, nodeInfo.Pubkey)
66-
assert.Empty(t, nodeInfo.Network)
67-
assert.Empty(t, nodeInfo.BlockHeight)
68-
assert.Empty(t, nodeInfo.BlockHash)
63+
assert.Nil(t, nodeInfo.Alias)
64+
assert.Nil(t, nodeInfo.Color)
65+
assert.Nil(t, nodeInfo.Pubkey)
66+
assert.Nil(t, nodeInfo.Network)
67+
assert.Nil(t, nodeInfo.BlockHeight)
68+
assert.Nil(t, nodeInfo.BlockHash)
6969
// get_info method is always granted, but does not return pubkey
7070
assert.Contains(t, nodeInfo.Methods, models.GET_INFO_METHOD)
7171
assert.Equal(t, []string{}, nodeInfo.Notifications)
@@ -107,12 +107,12 @@ func TestHandleGetInfoEvent_WithPermission(t *testing.T) {
107107

108108
assert.Nil(t, publishedResponse.Error)
109109
nodeInfo := publishedResponse.Result.(*getInfoResponse)
110-
assert.Equal(t, tests.MockNodeInfo.Alias, nodeInfo.Alias)
111-
assert.Equal(t, tests.MockNodeInfo.Color, nodeInfo.Color)
112-
assert.Equal(t, tests.MockNodeInfo.Pubkey, nodeInfo.Pubkey)
113-
assert.Equal(t, tests.MockNodeInfo.Network, nodeInfo.Network)
114-
assert.Equal(t, tests.MockNodeInfo.BlockHeight, nodeInfo.BlockHeight)
115-
assert.Equal(t, tests.MockNodeInfo.BlockHash, nodeInfo.BlockHash)
110+
assert.Equal(t, tests.MockNodeInfo.Alias, *nodeInfo.Alias)
111+
assert.Equal(t, tests.MockNodeInfo.Color, *nodeInfo.Color)
112+
assert.Equal(t, tests.MockNodeInfo.Pubkey, *nodeInfo.Pubkey)
113+
assert.Equal(t, tests.MockNodeInfo.Network, *nodeInfo.Network)
114+
assert.Equal(t, tests.MockNodeInfo.BlockHeight, *nodeInfo.BlockHeight)
115+
assert.Equal(t, tests.MockNodeInfo.BlockHash, *nodeInfo.BlockHash)
116116
assert.Contains(t, nodeInfo.Methods, "get_info")
117117
assert.Equal(t, []string{}, nodeInfo.Notifications)
118118
}
@@ -157,12 +157,12 @@ func TestHandleGetInfoEvent_WithMetadata(t *testing.T) {
157157

158158
assert.Nil(t, publishedResponse.Error)
159159
nodeInfo := publishedResponse.Result.(*getInfoResponse)
160-
assert.Equal(t, tests.MockNodeInfo.Alias, nodeInfo.Alias)
161-
assert.Equal(t, tests.MockNodeInfo.Color, nodeInfo.Color)
162-
assert.Equal(t, tests.MockNodeInfo.Pubkey, nodeInfo.Pubkey)
163-
assert.Equal(t, tests.MockNodeInfo.Network, nodeInfo.Network)
164-
assert.Equal(t, tests.MockNodeInfo.BlockHeight, nodeInfo.BlockHeight)
165-
assert.Equal(t, tests.MockNodeInfo.BlockHash, nodeInfo.BlockHash)
160+
assert.Equal(t, tests.MockNodeInfo.Alias, *nodeInfo.Alias)
161+
assert.Equal(t, tests.MockNodeInfo.Color, *nodeInfo.Color)
162+
assert.Equal(t, tests.MockNodeInfo.Pubkey, *nodeInfo.Pubkey)
163+
assert.Equal(t, tests.MockNodeInfo.Network, *nodeInfo.Network)
164+
assert.Equal(t, tests.MockNodeInfo.BlockHeight, *nodeInfo.BlockHeight)
165+
assert.Equal(t, tests.MockNodeInfo.BlockHash, *nodeInfo.BlockHash)
166166
assert.Contains(t, nodeInfo.Methods, "get_info")
167167
assert.Equal(t, []string{}, nodeInfo.Notifications)
168168

@@ -214,12 +214,12 @@ func TestHandleGetInfoEvent_WithNotifications(t *testing.T) {
214214

215215
assert.Nil(t, publishedResponse.Error)
216216
nodeInfo := publishedResponse.Result.(*getInfoResponse)
217-
assert.Equal(t, tests.MockNodeInfo.Alias, nodeInfo.Alias)
218-
assert.Equal(t, tests.MockNodeInfo.Color, nodeInfo.Color)
219-
assert.Equal(t, tests.MockNodeInfo.Pubkey, nodeInfo.Pubkey)
220-
assert.Equal(t, tests.MockNodeInfo.Network, nodeInfo.Network)
221-
assert.Equal(t, tests.MockNodeInfo.BlockHeight, nodeInfo.BlockHeight)
222-
assert.Equal(t, tests.MockNodeInfo.BlockHash, nodeInfo.BlockHash)
217+
assert.Equal(t, tests.MockNodeInfo.Alias, *nodeInfo.Alias)
218+
assert.Equal(t, tests.MockNodeInfo.Color, *nodeInfo.Color)
219+
assert.Equal(t, tests.MockNodeInfo.Pubkey, *nodeInfo.Pubkey)
220+
assert.Equal(t, tests.MockNodeInfo.Network, *nodeInfo.Network)
221+
assert.Equal(t, tests.MockNodeInfo.BlockHeight, *nodeInfo.BlockHeight)
222+
assert.Equal(t, tests.MockNodeInfo.BlockHash, *nodeInfo.BlockHash)
223223
assert.Contains(t, nodeInfo.Methods, "get_info")
224224
assert.Equal(t, []string{"payment_received", "payment_sent"}, nodeInfo.Notifications)
225225
}

0 commit comments

Comments
 (0)