Skip to content

Commit b2ea42a

Browse files
committed
refactor: address feedback (POST, sig prefix, etc)
1 parent 49d524a commit b2ea42a

File tree

7 files changed

+44
-48
lines changed

7 files changed

+44
-48
lines changed

routing/http/client/client.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,6 @@ func (c *Client) Provide(ctx context.Context, announcements ...types.Announcemen
278278
records[i] = record
279279
}
280280

281-
// TODO: trailing slash?
282281
url := c.baseURL + "/routing/v1/providers"
283282
req := jsontypes.AnnounceProvidersRequest{
284283
Providers: records,
@@ -293,7 +292,7 @@ func (c *Client) provide(ctx context.Context, url string, req interface{}) (iter
293292
return nil, err
294293
}
295294

296-
httpReq, err := http.NewRequestWithContext(ctx, http.MethodPut, url, bytes.NewBuffer(b))
295+
httpReq, err := http.NewRequestWithContext(ctx, http.MethodPost, url, bytes.NewBuffer(b))
297296
if err != nil {
298297
return nil, err
299298
}
@@ -465,10 +464,9 @@ func (c *Client) ProvidePeer(ctx context.Context, ttl time.Duration, metadata []
465464
c.afterSignCallback(record)
466465
}
467466

468-
// TODO: trailing slash?
469467
url := c.baseURL + "/routing/v1/peers"
470468
req := jsontypes.AnnouncePeersRequest{
471-
Providers: []types.Record{record},
469+
Peers: []types.Record{record},
472470
}
473471

474472
return c.provide(ctx, url, req)

routing/http/client/client_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,6 @@ func TestClient_Provide(t *testing.T) {
445445
Timestamp: clock.Now().UTC().Truncate(time.Millisecond),
446446
TTL: c.ttl,
447447
Addrs: drAddrsToAddrs(client.addrs),
448-
Protocols: []string{},
449448
ID: client.peerID,
450449
}).Return(c.routerAdvisoryTTL, c.routerErr)
451450
}
@@ -713,7 +712,6 @@ func TestClient_ProvidePeer(t *testing.T) {
713712
Timestamp: clock.Now().UTC().Truncate(time.Second),
714713
TTL: c.ttl,
715714
Addrs: drAddrsToAddrs(client.addrs),
716-
Protocols: []string{},
717715
ID: client.peerID,
718716
}).Return(c.routerAdvisoryTTL, c.routerErr)
719717

routing/http/server/server.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ const (
4040
var logger = logging.Logger("routing/http/server")
4141

4242
const (
43-
providePath = "/routing/v1/providers" // TODO: with trailing slash?
43+
providePath = "/routing/v1/providers"
4444
findProvidersPath = "/routing/v1/providers/{cid}"
45-
providePeersPath = "/routing/v1/peers" // TODO: with trailing slash?
45+
providePeersPath = "/routing/v1/peers"
4646
findPeersPath = "/routing/v1/peers/{peer-id}"
4747
getIPNSPath = "/routing/v1/ipns/{cid}"
4848
)
@@ -139,9 +139,9 @@ func Handler(svc ContentRouter, opts ...Option) http.Handler {
139139

140140
r := mux.NewRouter()
141141
r.HandleFunc(findProvidersPath, server.findProviders).Methods(http.MethodGet)
142-
r.HandleFunc(providePath, server.provide).Methods(http.MethodPut)
142+
r.HandleFunc(providePath, server.provide).Methods(http.MethodPost)
143143
r.HandleFunc(findPeersPath, server.findPeers).Methods(http.MethodGet)
144-
r.HandleFunc(providePeersPath, server.providePeers).Methods(http.MethodPut)
144+
r.HandleFunc(providePeersPath, server.providePeers).Methods(http.MethodPost)
145145
r.HandleFunc(getIPNSPath, server.GetIPNS).Methods(http.MethodGet)
146146
r.HandleFunc(getIPNSPath, server.PutIPNS).Methods(http.MethodPut)
147147
return r
@@ -304,7 +304,7 @@ func (s *server) providePeers(w http.ResponseWriter, r *http.Request) {
304304
return
305305
}
306306

307-
responseIter := iter.Map[types.Record, *types.AnnouncementRecord](iter.FromSlice(req.Providers), func(t types.Record) *types.AnnouncementRecord {
307+
responseIter := iter.Map[types.Record, *types.AnnouncementRecord](iter.FromSlice(req.Peers), func(t types.Record) *types.AnnouncementRecord {
308308
resRecord := &types.AnnouncementRecord{
309309
Schema: types.SchemaAnnouncement,
310310
}

routing/http/server/server_test.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ func TestProviders(t *testing.T) {
204204

205205
urlStr := serverAddr + "/routing/v1/providers"
206206

207-
httpReq, err := http.NewRequest(http.MethodPut, urlStr, bytes.NewReader(body))
207+
httpReq, err := http.NewRequest(http.MethodPost, urlStr, bytes.NewReader(body))
208208
require.NoError(t, err)
209209
httpReq.Header.Set("Accept", contentType)
210210

@@ -220,12 +220,12 @@ func TestProviders(t *testing.T) {
220220
require.Equal(t, expectedBody, string(body))
221221
}
222222

223-
t.Run("PUT /routing/v1/providers (JSON Response)", func(t *testing.T) {
224-
runPutTest(t, mediaTypeJSON, `{"ProvideResults":[{"Schema":"announcement","Payload":{"Addrs":[],"CID":"`+cid1Str+`","ID":"`+pid1Str+`","Protocols":[],"TTL":3600000}},{"Schema":"announcement","Payload":{"Addrs":[],"CID":"`+cid1Str+`","ID":"`+pid2Str+`","Protocols":[],"TTL":60000}}]}`)
223+
t.Run("POST /routing/v1/providers (JSON Response)", func(t *testing.T) {
224+
runPutTest(t, mediaTypeJSON, `{"ProvideResults":[{"Schema":"announcement","Payload":{"CID":"`+cid1Str+`","ID":"`+pid1Str+`","TTL":3600000}},{"Schema":"announcement","Payload":{"CID":"`+cid1Str+`","ID":"`+pid2Str+`","TTL":60000}}]}`)
225225
})
226226

227-
t.Run("PUT /routing/v1/providers (NDJSON Response)", func(t *testing.T) {
228-
runPutTest(t, mediaTypeNDJSON, `{"Schema":"announcement","Payload":{"Addrs":[],"CID":"`+cid1Str+`","ID":"`+pid1Str+`","Protocols":[],"TTL":3600000}}`+"\n"+`{"Schema":"announcement","Payload":{"Addrs":[],"CID":"`+cid1Str+`","ID":"`+pid2Str+`","Protocols":[],"TTL":60000}}`+"\n")
227+
t.Run("POST /routing/v1/providers (NDJSON Response)", func(t *testing.T) {
228+
runPutTest(t, mediaTypeNDJSON, `{"Schema":"announcement","Payload":{"CID":"`+cid1Str+`","ID":"`+pid1Str+`","TTL":3600000}}`+"\n"+`{"Schema":"announcement","Payload":{"CID":"`+cid1Str+`","ID":"`+pid2Str+`","TTL":60000}}`+"\n")
229229
})
230230
}
231231

@@ -358,7 +358,7 @@ func TestPeers(t *testing.T) {
358358
err = rec2.Sign(pid2, sk2)
359359
require.NoError(t, err)
360360

361-
req := tjson.AnnounceProvidersRequest{Providers: []types.Record{rec1, rec2}}
361+
req := tjson.AnnouncePeersRequest{Peers: []types.Record{rec1, rec2}}
362362
body, err := json.Marshal(req)
363363
require.NoError(t, err)
364364

@@ -386,7 +386,7 @@ func TestPeers(t *testing.T) {
386386

387387
urlStr := serverAddr + "/routing/v1/peers"
388388

389-
httpReq, err := http.NewRequest(http.MethodPut, urlStr, bytes.NewReader(body))
389+
httpReq, err := http.NewRequest(http.MethodPost, urlStr, bytes.NewReader(body))
390390
require.NoError(t, err)
391391
httpReq.Header.Set("Accept", contentType)
392392

@@ -402,12 +402,12 @@ func TestPeers(t *testing.T) {
402402
require.Equal(t, expectedBody, string(body))
403403
}
404404

405-
t.Run("PUT /routing/v1/peers (JSON Response)", func(t *testing.T) {
406-
runPutTest(t, mediaTypeJSON, `{"ProvideResults":[{"Schema":"announcement","Payload":{"Addrs":[],"ID":"`+pid1.String()+`","Protocols":[],"TTL":3600000}},{"Schema":"announcement","Payload":{"Addrs":[],"ID":"`+pid2.String()+`","Protocols":[],"TTL":60000}}]}`)
405+
t.Run("POST /routing/v1/peers (JSON Response)", func(t *testing.T) {
406+
runPutTest(t, mediaTypeJSON, `{"ProvideResults":[{"Schema":"announcement","Payload":{"ID":"`+pid1.String()+`","TTL":3600000}},{"Schema":"announcement","Payload":{"ID":"`+pid2.String()+`","TTL":60000}}]}`)
407407
})
408408

409-
t.Run("PUT /routing/v1/peers (NDJSON Response)", func(t *testing.T) {
410-
runPutTest(t, mediaTypeNDJSON, `{"Schema":"announcement","Payload":{"Addrs":[],"ID":"`+pid1.String()+`","Protocols":[],"TTL":3600000}}`+"\n"+`{"Schema":"announcement","Payload":{"Addrs":[],"ID":"`+pid2.String()+`","Protocols":[],"TTL":60000}}`+"\n")
409+
t.Run("POST /routing/v1/peers (NDJSON Response)", func(t *testing.T) {
410+
runPutTest(t, mediaTypeNDJSON, `{"Schema":"announcement","Payload":{"ID":"`+pid1.String()+`","TTL":3600000}}`+"\n"+`{"Schema":"announcement","Payload":{"ID":"`+pid2.String()+`","TTL":60000}}`+"\n")
411411
})
412412
}
413413

routing/http/types/json/requests.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package json
22

3-
// AnnounceProvidersRequest is the content of a PUT Providers request.
3+
// AnnounceProvidersRequest is the content of a POST Providers request.
44
type AnnounceProvidersRequest struct {
5-
Error string
65
Providers RecordsArray
76
}
87

9-
// AnnouncePeersRequest is the content of a PUT Peers request.
10-
// TODO: is the the same? Shouldn't Providers be Peers?
11-
type AnnouncePeersRequest = AnnounceProvidersRequest
8+
// AnnouncePeersRequest is the content of a POST Peers request.
9+
type AnnouncePeersRequest struct {
10+
Peers RecordsArray
11+
}

routing/http/types/json/responses.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@ func (r *RecordsArray) UnmarshalJSON(b []byte) error {
5656
return nil
5757
}
5858

59-
// AnnounceProvidersResponse is the result of a PUT Providers request.
59+
// AnnounceProvidersResponse is the result of a POST Providers request.
6060
type AnnounceProvidersResponse struct {
6161
ProvideResults []*types.AnnouncementRecord
6262
}
6363

64-
// AnnouncePeersResponse is the result of a PUT Peers request.
64+
// AnnouncePeersResponse is the result of a POST Peers request.
6565
type AnnouncePeersResponse = AnnounceProvidersResponse

routing/http/types/record_announcement.go

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919
)
2020

2121
const SchemaAnnouncement = "announcement"
22-
const announcementSignaturePrefix = "PUT /routing/v1 announcement:"
22+
const announcementSignaturePrefix = "routing-record:"
2323

2424
var _ Record = &AnnouncementRecord{}
2525

@@ -57,12 +57,10 @@ func (ap AnnouncementPayload) MarshalJSON() ([]byte, error) {
5757
m := make(map[string]ipld.Node)
5858
var err error
5959

60-
// TODO: or goes empty? Affects signature.
6160
if ap.CID.Defined() {
6261
m["CID"] = basicnode.NewString(ap.CID.String())
6362
}
6463

65-
// TODO: is scope not set when empty? Affects signature.
6664
if ap.Scope != "" {
6765
m["Scope"] = basicnode.NewString(string(ap.Scope))
6866
}
@@ -83,24 +81,26 @@ func (ap AnnouncementPayload) MarshalJSON() ([]byte, error) {
8381
m["Metadata"] = basicnode.NewString(ap.Metadata)
8482
}
8583

86-
// TODO: or goes empty if len == 0? Affects signature.
87-
addrs := []ipld.Node{}
88-
for _, addr := range ap.Addrs {
89-
addrs = append(addrs, basicnode.NewString(addr.String()))
90-
}
91-
m["Addrs"], err = makeIPLDList(addrs)
92-
if err != nil {
93-
return nil, err
84+
if len(ap.Addrs) != 0 {
85+
addrs := []ipld.Node{}
86+
for _, addr := range ap.Addrs {
87+
addrs = append(addrs, basicnode.NewString(addr.String()))
88+
}
89+
m["Addrs"], err = makeIPLDList(addrs)
90+
if err != nil {
91+
return nil, err
92+
}
9493
}
9594

96-
// TODO: or goes empty if len == 0? Affects signature.
97-
protocols := []ipld.Node{}
98-
for _, protocol := range ap.Protocols {
99-
protocols = append(addrs, basicnode.NewString(protocol))
100-
}
101-
m["Protocols"], err = makeIPLDList(protocols)
102-
if err != nil {
103-
return nil, err
95+
if len(ap.Protocols) != 0 {
96+
protocols := []ipld.Node{}
97+
for _, protocol := range ap.Protocols {
98+
protocols = append(protocols, basicnode.NewString(protocol))
99+
}
100+
m["Protocols"], err = makeIPLDList(protocols)
101+
if err != nil {
102+
return nil, err
103+
}
104104
}
105105

106106
// Make final IPLD node.

0 commit comments

Comments
 (0)