@@ -14,20 +14,55 @@ const options = {
1414 const echo = new EchoServer ( )
1515 echo . polka . use ( body . raw ( { type : 'application/vnd.ipfs.ipns-record' } ) )
1616 echo . polka . use ( body . text ( ) )
17+ echo . polka . use ( body . json ( ) )
1718 echo . polka . use ( ( req , res , next ) => {
1819 next ( )
1920 lastCalledUrl = req . url
2021 } )
2122 echo . polka . post ( '/add-providers/:cid' , ( req , res ) => {
2223 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+ }
2546 } )
2647 echo . polka . get ( '/routing/v1/providers/:cid' , ( req , res ) => {
2748 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+ }
3166 } )
3267 echo . polka . post ( '/add-peers/:peerId' , ( req , res ) => {
3368 callCount ++
0 commit comments