Skip to content

Commit ba63f59

Browse files
committed
BIG WIP
1 parent 2ea39b8 commit ba63f59

15 files changed

+210
-194
lines changed

routing/http/client/client.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ func (c *measuringIter[T]) Close() error {
157157
return c.Iter.Close()
158158
}
159159

160-
func (c *client) FindProviders(ctx context.Context, key cid.Cid) (provs iter.ResultIter[types.ProviderResponse], err error) {
160+
func (c *client) FindProviders(ctx context.Context, key cid.Cid) (provs iter.ResultIter[types.Record], err error) {
161161
// TODO test measurements
162162
m := newMeasurement("FindProviders")
163163

@@ -185,7 +185,7 @@ func (c *client) FindProviders(ctx context.Context, key cid.Cid) (provs iter.Res
185185
if resp.StatusCode == http.StatusNotFound {
186186
resp.Body.Close()
187187
m.record(ctx)
188-
return iter.FromSlice[iter.Result[types.ProviderResponse]](nil), nil
188+
return iter.FromSlice[iter.Result[types.Record]](nil), nil
189189
}
190190

191191
if resp.StatusCode != http.StatusOK {
@@ -213,22 +213,22 @@ func (c *client) FindProviders(ctx context.Context, key cid.Cid) (provs iter.Res
213213
}
214214
}()
215215

216-
var it iter.ResultIter[types.ProviderResponse]
216+
var it iter.ResultIter[types.Record]
217217
switch mediaType {
218218
case mediaTypeJSON:
219219
parsedResp := &jsontypes.ProvidersResponse{}
220220
err = json.NewDecoder(resp.Body).Decode(parsedResp)
221-
var sliceIt iter.Iter[types.ProviderResponse] = iter.FromSlice(parsedResp.Providers)
221+
var sliceIt iter.Iter[types.Record] = iter.FromSlice(parsedResp.Providers)
222222
it = iter.ToResultIter(sliceIt)
223223
case mediaTypeNDJSON:
224224
skipBodyClose = true
225-
it = ndjson.NewReadProvidersResponseIter(resp.Body)
225+
it = ndjson.NewProvidersResponseIter(resp.Body)
226226
default:
227227
logger.Errorw("unknown media type", "MediaType", mediaType, "ContentType", respContentType)
228228
return nil, errors.New("unknown content type")
229229
}
230230

231-
return &measuringIter[iter.Result[types.ProviderResponse]]{Iter: it, ctx: ctx, m: m}, nil
231+
return &measuringIter[iter.Result[types.Record]]{Iter: it, ctx: ctx, m: m}, nil
232232
}
233233

234234
func (c *client) FindIPNSRecord(ctx context.Context, name ipns.Name) (*ipns.Record, error) {

routing/http/client/client_test.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ import (
2929

3030
type mockContentRouter struct{ mock.Mock }
3131

32-
func (m *mockContentRouter) FindProviders(ctx context.Context, key cid.Cid, limit int) (iter.ResultIter[types.ProviderResponse], error) {
32+
func (m *mockContentRouter) FindProviders(ctx context.Context, key cid.Cid, limit int) (iter.ResultIter[types.Record], error) {
3333
args := m.Called(ctx, key, limit)
34-
return args.Get(0).(iter.ResultIter[types.ProviderResponse]), args.Error(1)
34+
return args.Get(0).(iter.ResultIter[types.Record]), args.Error(1)
3535
}
3636

3737
func (m *mockContentRouter) FindIPNSRecord(ctx context.Context, name ipns.Name) (*ipns.Record, error) {
@@ -139,13 +139,13 @@ func addrsToDRAddrs(addrs []multiaddr.Multiaddr) (drmas []types.Multiaddr) {
139139
return
140140
}
141141

142-
func makeBSReadProviderResp() types.ReadBitswapProviderRecord {
142+
func makeBSReadProviderResp() types.PeerRecord {
143143
peerID, addrs, _ := makeProviderAndIdentity()
144-
return types.ReadBitswapProviderRecord{
145-
Protocol: "transport-bitswap",
146-
Schema: types.SchemaBitswap,
147-
ID: &peerID,
148-
Addrs: addrsToDRAddrs(addrs),
144+
return types.PeerRecord{
145+
Schema: types.SchemaPeer,
146+
ID: &peerID,
147+
Protocols: []string{"transport-bitswap"},
148+
Addrs: addrsToDRAddrs(addrs),
149149
}
150150
}
151151

@@ -190,21 +190,21 @@ func (e *osErrContains) errContains(t *testing.T, err error) {
190190

191191
func TestClient_FindProviders(t *testing.T) {
192192
bsReadProvResp := makeBSReadProviderResp()
193-
bitswapProvs := []iter.Result[types.ProviderResponse]{
193+
bitswapProvs := []iter.Result[types.Record]{
194194
{Val: &bsReadProvResp},
195195
}
196196

197197
cases := []struct {
198198
name string
199199
httpStatusCode int
200200
stopServer bool
201-
routerProvs []iter.Result[types.ProviderResponse]
201+
routerProvs []iter.Result[types.Record]
202202
routerErr error
203203
clientRequiresStreaming bool
204204
serverStreamingDisabled bool
205205

206206
expErrContains osErrContains
207-
expProvs []iter.Result[types.ProviderResponse]
207+
expProvs []iter.Result[types.Record]
208208
expStreamingResponse bool
209209
expJSONResponse bool
210210
}{
@@ -308,7 +308,7 @@ func TestClient_FindProviders(t *testing.T) {
308308

309309
c.expErrContains.errContains(t, err)
310310

311-
provs := iter.ReadAll[iter.Result[types.ProviderResponse]](provsIter)
311+
provs := iter.ReadAll[iter.Result[types.Record]](provsIter)
312312
assert.Equal(t, c.expProvs, provs)
313313
})
314314
}

routing/http/contentrouter/contentrouter.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ var logger = logging.Logger("service/contentrouting")
1919
const ttl = 24 * time.Hour
2020

2121
type Client interface {
22-
FindProviders(ctx context.Context, key cid.Cid) (iter.ResultIter[types.ProviderResponse], error)
22+
FindProviders(ctx context.Context, key cid.Cid) (iter.ResultIter[types.Record], error)
2323
}
2424

2525
type contentRouter struct {
@@ -66,7 +66,7 @@ func (c *contentRouter) Ready() bool {
6666
}
6767

6868
// readProviderResponses reads bitswap records from the iterator into the given channel, dropping non-bitswap records.
69-
func readProviderResponses(iter iter.ResultIter[types.ProviderResponse], ch chan<- peer.AddrInfo) {
69+
func readProviderResponses(iter iter.ResultIter[types.Record], ch chan<- peer.AddrInfo) {
7070
defer close(ch)
7171
defer iter.Close()
7272
for iter.Next() {
@@ -76,8 +76,8 @@ func readProviderResponses(iter iter.ResultIter[types.ProviderResponse], ch chan
7676
continue
7777
}
7878
v := res.Val
79-
if v.GetSchema() == types.SchemaBitswap {
80-
result, ok := v.(*types.ReadBitswapProviderRecord)
79+
if v.GetSchema() == types.SchemaPeer {
80+
result, ok := v.(*types.PeerRecord)
8181
if !ok {
8282
logger.Errorw(
8383
"problem casting find providers result",

routing/http/contentrouter/contentrouter_test.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ import (
1616

1717
type mockClient struct{ mock.Mock }
1818

19-
func (m *mockClient) FindProviders(ctx context.Context, key cid.Cid) (iter.ResultIter[types.ProviderResponse], error) {
19+
func (m *mockClient) FindProviders(ctx context.Context, key cid.Cid) (iter.ResultIter[types.Record], error) {
2020
args := m.Called(ctx, key)
21-
return args.Get(0).(iter.ResultIter[types.ProviderResponse]), args.Error(1)
21+
return args.Get(0).(iter.ResultIter[types.Record]), args.Error(1)
2222
}
2323
func (m *mockClient) Ready(ctx context.Context) (bool, error) {
2424
args := m.Called(ctx)
@@ -46,22 +46,22 @@ func TestFindProvidersAsync(t *testing.T) {
4646

4747
p1 := peer.ID("peer1")
4848
p2 := peer.ID("peer2")
49-
ais := []types.ProviderResponse{
50-
&types.ReadBitswapProviderRecord{
51-
Protocol: "transport-bitswap",
52-
Schema: types.SchemaBitswap,
53-
ID: &p1,
49+
ais := []types.Record{
50+
&types.PeerRecord{
51+
Schema: types.SchemaPeer,
52+
ID: &p1,
53+
Protocols: []string{"transport-bitswap"},
5454
},
55-
&types.ReadBitswapProviderRecord{
56-
Protocol: "transport-bitswap",
57-
Schema: types.SchemaBitswap,
58-
ID: &p2,
59-
},
60-
&types.UnknownProviderRecord{
61-
Protocol: "UNKNOWN",
55+
&types.PeerRecord{
56+
Schema: types.SchemaPeer,
57+
ID: &p2,
58+
Protocols: []string{"transport-bitswap"},
6259
},
60+
// &types.UnknownRecord{
61+
// Protocol: "UNKNOWN",
62+
// },
6363
}
64-
aisIter := iter.ToResultIter[types.ProviderResponse](iter.FromSlice(ais))
64+
aisIter := iter.ToResultIter[types.Record](iter.FromSlice(ais))
6565

6666
client.On("FindProviders", ctx, key).Return(aisIter, nil)
6767

routing/http/server/server.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,14 @@ const (
4141
)
4242

4343
type FindProvidersAsyncResponse struct {
44-
ProviderResponse types.ProviderResponse
44+
ProviderResponse types.Record
4545
Error error
4646
}
4747

4848
type ContentRouter interface {
4949
// FindProviders searches for peers who are able to provide a given key. Limit
5050
// indicates the maximum amount of results to return. 0 means unbounded.
51-
FindProviders(ctx context.Context, key cid.Cid, limit int) (iter.ResultIter[types.ProviderResponse], error)
51+
FindProviders(ctx context.Context, key cid.Cid, limit int) (iter.ResultIter[types.Record], error)
5252

5353
// FindIPNSRecord searches for an [ipns.Record] for the given [ipns.Name].
5454
FindIPNSRecord(ctx context.Context, name ipns.Name) (*ipns.Record, error)
@@ -119,7 +119,7 @@ func (s *server) findProviders(w http.ResponseWriter, httpReq *http.Request) {
119119
return
120120
}
121121

122-
var handlerFunc func(w http.ResponseWriter, provIter iter.ResultIter[types.ProviderResponse])
122+
var handlerFunc func(w http.ResponseWriter, provIter iter.ResultIter[types.Record])
123123

124124
var supportsNDJSON bool
125125
var supportsJSON bool
@@ -167,11 +167,11 @@ func (s *server) findProviders(w http.ResponseWriter, httpReq *http.Request) {
167167
handlerFunc(w, provIter)
168168
}
169169

170-
func (s *server) findProvidersJSON(w http.ResponseWriter, provIter iter.ResultIter[types.ProviderResponse]) {
170+
func (s *server) findProvidersJSON(w http.ResponseWriter, provIter iter.ResultIter[types.Record]) {
171171
defer provIter.Close()
172172

173173
var (
174-
providers []types.ProviderResponse
174+
providers []types.Record
175175
i int
176176
)
177177

@@ -188,7 +188,7 @@ func (s *server) findProvidersJSON(w http.ResponseWriter, provIter iter.ResultIt
188188
writeJSONResult(w, "FindProviders", response)
189189
}
190190

191-
func (s *server) findProvidersNDJSON(w http.ResponseWriter, provIter iter.ResultIter[types.ProviderResponse]) {
191+
func (s *server) findProvidersNDJSON(w http.ResponseWriter, provIter iter.ResultIter[types.Record]) {
192192
defer provIter.Close()
193193

194194
w.Header().Set("Content-Type", mediaTypeNDJSON)

routing/http/server/server_test.go

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@ func TestHeaders(t *testing.T) {
2828
t.Cleanup(server.Close)
2929
serverAddr := "http://" + server.Listener.Addr().String()
3030

31-
results := iter.FromSlice([]iter.Result[types.ProviderResponse]{
32-
{Val: &types.ReadBitswapProviderRecord{
33-
Protocol: "transport-bitswap",
34-
Schema: types.SchemaBitswap,
31+
results := iter.FromSlice([]iter.Result[types.Record]{
32+
{Val: &types.PeerRecord{
33+
Schema: types.SchemaPeer,
34+
Protocols: []string{"transport-bitswap"},
3535
}}},
3636
)
3737

@@ -72,18 +72,18 @@ func TestResponse(t *testing.T) {
7272
runTest := func(t *testing.T, contentType string, expectedStream bool, expectedBody string) {
7373
t.Parallel()
7474

75-
results := iter.FromSlice([]iter.Result[types.ProviderResponse]{
76-
{Val: &types.ReadBitswapProviderRecord{
77-
Protocol: "transport-bitswap",
78-
Schema: types.SchemaBitswap,
79-
ID: &pid,
80-
Addrs: []types.Multiaddr{},
75+
results := iter.FromSlice([]iter.Result[types.Record]{
76+
{Val: &types.PeerRecord{
77+
Schema: types.SchemaPeer,
78+
ID: &pid,
79+
Protocols: []string{"transport-bitswap"},
80+
Addrs: []types.Multiaddr{},
8181
}},
82-
{Val: &types.ReadBitswapProviderRecord{
83-
Protocol: "transport-bitswap",
84-
Schema: types.SchemaBitswap,
85-
ID: &pid2,
86-
Addrs: []types.Multiaddr{},
82+
{Val: &types.PeerRecord{
83+
Schema: types.SchemaPeer,
84+
ID: &pid2,
85+
Protocols: []string{"transport-bitswap"},
86+
Addrs: []types.Multiaddr{},
8787
}}},
8888
)
8989

@@ -111,15 +111,15 @@ func TestResponse(t *testing.T) {
111111
body, err := io.ReadAll(resp.Body)
112112
require.NoError(t, err)
113113

114-
require.Equal(t, string(body), expectedBody)
114+
require.Equal(t, expectedBody, string(body))
115115
}
116116

117117
t.Run("JSON Response", func(t *testing.T) {
118-
runTest(t, mediaTypeJSON, false, `{"Providers":[{"Protocol":"transport-bitswap","Schema":"bitswap","ID":"12D3KooWM8sovaEGU1bmiWGWAzvs47DEcXKZZTuJnpQyVTkRs2Vn","Addrs":[]},{"Protocol":"transport-bitswap","Schema":"bitswap","ID":"12D3KooWM8sovaEGU1bmiWGWAzvs47DEcXKZZTuJnpQyVTkRs2Vz","Addrs":[]}]}`)
118+
runTest(t, mediaTypeJSON, false, `{"Providers":[{"Addrs":[],"ID":"12D3KooWM8sovaEGU1bmiWGWAzvs47DEcXKZZTuJnpQyVTkRs2Vn","Protocols":["transport-bitswap"],"Schema":"peer"},{"Addrs":[],"ID":"12D3KooWM8sovaEGU1bmiWGWAzvs47DEcXKZZTuJnpQyVTkRs2Vz","Protocols":["transport-bitswap"],"Schema":"peer"}]}`)
119119
})
120120

121121
t.Run("NDJSON Response", func(t *testing.T) {
122-
runTest(t, mediaTypeNDJSON, true, `{"Protocol":"transport-bitswap","Schema":"bitswap","ID":"12D3KooWM8sovaEGU1bmiWGWAzvs47DEcXKZZTuJnpQyVTkRs2Vn","Addrs":[]}`+"\n"+`{"Protocol":"transport-bitswap","Schema":"bitswap","ID":"12D3KooWM8sovaEGU1bmiWGWAzvs47DEcXKZZTuJnpQyVTkRs2Vz","Addrs":[]}`+"\n")
122+
runTest(t, mediaTypeNDJSON, true, `{"Addrs":[],"ID":"12D3KooWM8sovaEGU1bmiWGWAzvs47DEcXKZZTuJnpQyVTkRs2Vn","Protocols":["transport-bitswap"],"Schema":"peer"}`+"\n"+`{"Addrs":[],"ID":"12D3KooWM8sovaEGU1bmiWGWAzvs47DEcXKZZTuJnpQyVTkRs2Vz","Protocols":["transport-bitswap"],"Schema":"peer"}`+"\n")
123123
})
124124
}
125125

@@ -257,9 +257,9 @@ func TestIPNS(t *testing.T) {
257257

258258
type mockContentRouter struct{ mock.Mock }
259259

260-
func (m *mockContentRouter) FindProviders(ctx context.Context, key cid.Cid, limit int) (iter.ResultIter[types.ProviderResponse], error) {
260+
func (m *mockContentRouter) FindProviders(ctx context.Context, key cid.Cid, limit int) (iter.ResultIter[types.Record], error) {
261261
args := m.Called(ctx, key, limit)
262-
return args.Get(0).(iter.ResultIter[types.ProviderResponse]), args.Error(1)
262+
return args.Get(0).(iter.ResultIter[types.Record]), args.Error(1)
263263
}
264264

265265
func (m *mockContentRouter) FindIPNSRecord(ctx context.Context, name ipns.Name) (*ipns.Record, error) {

routing/http/types/json/provider.go renamed to routing/http/types/json/providers.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88

99
// ProvidersResponse is the result of a GET Providers request.
1010
type ProvidersResponse struct {
11-
Providers []types.ProviderResponse
11+
Providers []types.Record
1212
}
1313

1414
func (r *ProvidersResponse) UnmarshalJSON(b []byte) error {
@@ -19,15 +19,15 @@ func (r *ProvidersResponse) UnmarshalJSON(b []byte) error {
1919
}
2020

2121
for _, provBytes := range tempFPR.Providers {
22-
var readProv types.UnknownProviderRecord
22+
var readProv types.UnknownRecord
2323
err := json.Unmarshal(provBytes, &readProv)
2424
if err != nil {
2525
return err
2626
}
2727

2828
switch readProv.Schema {
29-
case types.SchemaBitswap:
30-
var prov types.ReadBitswapProviderRecord
29+
case types.SchemaPeer:
30+
var prov types.PeerRecord
3131
err := json.Unmarshal(readProv.Bytes, &prov)
3232
if err != nil {
3333
return err

routing/http/types/ndjson/provider.go

Lines changed: 0 additions & 36 deletions
This file was deleted.

0 commit comments

Comments
 (0)