@@ -14,20 +14,55 @@ const options = {
14
14
const echo = new EchoServer ( )
15
15
echo . polka . use ( body . raw ( { type : 'application/vnd.ipfs.ipns-record' } ) )
16
16
echo . polka . use ( body . text ( ) )
17
+ echo . polka . use ( body . json ( ) )
17
18
echo . polka . use ( ( req , res , next ) => {
18
19
next ( )
19
20
lastCalledUrl = req . url
20
21
} )
21
22
echo . polka . post ( '/add-providers/:cid' , ( req , res ) => {
22
23
callCount ++
23
- providers . set ( req . params . cid , req . body )
24
- res . end ( )
24
+ try {
25
+
26
+ let data
27
+ try {
28
+ // when passed data from a test where `body=providers.map(prov => JSON.stringify(prov)).join('\n')`
29
+ data = { Providers : req . body . split ( '\n' ) . map ( line => JSON . parse ( line ) ) }
30
+ } catch ( err ) {
31
+ // when passed data from a test where `body=JSON.stringify({ Providers: providers })`
32
+ data = req . body
33
+ }
34
+
35
+ providers . set ( req . params . cid , data )
36
+ res . end ( JSON . stringify ( { success : true } ) )
37
+ } catch ( err ) {
38
+ console . error ( 'Error in add-providers:' , err )
39
+ res . statusCode = 400
40
+ res . end ( JSON . stringify ( {
41
+ error : err . message ,
42
+ code : 'ERR_INVALID_INPUT'
43
+ } ) )
44
+ providers . delete ( req . params . cid )
45
+ }
25
46
} )
26
47
echo . polka . get ( '/routing/v1/providers/:cid' , ( req , res ) => {
27
48
callCount ++
28
- const records = providers . get ( req . params . cid ) ?? '[]'
29
- providers . delete ( req . params . cid )
30
- res . end ( records )
49
+ try {
50
+ const providerData = providers . get ( req . params . cid ) || { Providers : [ ] }
51
+ const acceptHeader = req . headers . accept
52
+
53
+ if ( acceptHeader ?. includes ( 'application/x-ndjson' ) ) {
54
+ res . setHeader ( 'Content-Type' , 'application/x-ndjson' )
55
+ const providers = Array . isArray ( providerData . Providers ) ? providerData . Providers : [ ]
56
+ res . end ( providers . map ( p => JSON . stringify ( p ) ) . join ( '\n' ) )
57
+ } else {
58
+ res . setHeader ( 'Content-Type' , 'application/json' )
59
+ res . end ( JSON . stringify ( providerData ) )
60
+ }
61
+ } catch ( err ) {
62
+ console . error ( 'Error in get providers:' , err )
63
+ res . statusCode = 500
64
+ res . end ( JSON . stringify ( { error : err . message } ) )
65
+ }
31
66
} )
32
67
echo . polka . post ( '/add-peers/:peerId' , ( req , res ) => {
33
68
callCount ++
0 commit comments