@@ -29,22 +29,20 @@ function hapiInfoToMultiaddr (info) {
29
29
return toMultiaddr ( uri )
30
30
}
31
31
32
- async function serverCreator ( serverAddrsArr , createServerFunc , hapiInfoToMultiaddr , ipfs ) {
33
- if ( ! serverAddrsArr . length ) {
34
- debug ( Error ( 'There are no addresses' ) )
32
+ async function serverCreator ( serverAddrs , createServer , hapiInfoToMultiaddr , ipfs ) {
33
+ if ( ! serverAddrs . length ) {
34
+ return [ ]
35
35
}
36
36
// just in case the address is just string
37
- let serversAddrs = [ ] . concat ( serverAddrsArr )
38
- const processServer = async ( serverInstance , createServerFunc , hapiInfoToMultiaddr , ipfs ) => {
39
- let addr = serverInstance . split ( '/' )
40
- let _Server = await createServerFunc ( addr [ 2 ] , addr [ 4 ] , ipfs )
41
- await _Server . start ( )
42
- _Server . info . ma = hapiInfoToMultiaddr ( _Server . info )
43
- return _Server
37
+ serverAddrs = Array . isArray ( serverAddrs ) ? serverAddrs : [ serverAddrs ]
38
+ const processServer = async address => {
39
+ const addrParts = address . split ( '/' )
40
+ const server = await createServer ( addrParts [ 2 ] , addrParts [ 4 ] , ipfs )
41
+ await server . start ( )
42
+ server . info . ma = hapiInfoToMultiaddr ( server . info )
43
+ return server
44
44
}
45
- return Promise . all (
46
- serversAddrs . map ( server => processServer ( server , createServerFunc , hapiInfoToMultiaddr , ipfs ) )
47
- ) . catch ( err => debug ( err ) )
45
+ return Promise . all ( serverAddrs . map ( processServer ) )
48
46
}
49
47
50
48
class HttpApi {
@@ -109,24 +107,22 @@ class HttpApi {
109
107
110
108
const apiAddrs = config . Addresses . API
111
109
112
- this . _apiServer = await Promise . resolve (
113
- serverCreator . apply ( this , [ apiAddrs , this . _createApiServer , hapiInfoToMultiaddr , ipfs ] )
114
- )
110
+ this . _apiServers = await serverCreator ( apiAddrs , this . _createApiServer , hapiInfoToMultiaddr , ipfs )
111
+
115
112
// for the CLI to know the where abouts of the API
116
- await promisify ( ipfs . _repo . apiAddr . set ) ( this . _apiServer [ 0 ] . info . ma )
113
+ await promisify ( ipfs . _repo . apiAddr . set ) ( this . _apiServers [ 0 ] . info . ma )
117
114
118
- const gatewayAddr = config . Addresses . Gateway
115
+ const gatewayAddrs = config . Addresses . Gateway
119
116
120
- this . _gatewayServer = await Promise . resolve (
121
- serverCreator . apply ( this , [ gatewayAddr , this . _createGatewayServer , hapiInfoToMultiaddr , ipfs ] )
122
- )
123
- this . _apiServer . forEach ( apiServer => {
117
+ this . _gatewayServers = await serverCreator ( gatewayAddrs , this . _createGatewayServer , hapiInfoToMultiaddr , ipfs )
118
+
119
+ this . _apiServers . forEach ( apiServer => {
124
120
ipfs . _print ( 'API listening on %s' , apiServer . info . ma )
125
121
} )
126
- this . _gatewayServer . forEach ( gatewayServer => {
122
+ this . _gatewayServers . forEach ( gatewayServer => {
127
123
ipfs . _print ( 'Gateway (read only) listening on %s' , gatewayServer . info . ma )
128
124
} )
129
- this . _apiServer . forEach ( apiServer => {
125
+ this . _apiServers . forEach ( apiServer => {
130
126
ipfs . _print ( 'Web UI available at %s' , toUri ( apiServer . info . ma ) + '/webui' )
131
127
} )
132
128
this . _log ( 'started' )
@@ -198,20 +194,18 @@ class HttpApi {
198
194
}
199
195
200
196
get apiAddr ( ) {
201
- if ( ! this . _apiServer ) throw new Error ( 'API address unavailable - server is not started' )
202
- return multiaddr ( '/ip4/127.0.0.1/tcp/' + this . _apiServer [ 0 ] . info . port )
197
+ if ( ! this . _apiServers ) throw new Error ( 'API address unavailable - server is not started' )
198
+ return multiaddr ( '/ip4/127.0.0.1/tcp/' + this . _apiServers [ 0 ] . info . port )
203
199
}
204
200
205
201
async stop ( ) {
206
- function stopServer ( serverArr ) {
207
- for ( let i = 0 ; i < serverArr . length ; i ++ ) {
208
- serverArr [ i ] . stop ( )
209
- }
202
+ function stopServers ( servers ) {
203
+ return Promise . all ( servers . map ( server => server . stop ( ) ) )
210
204
}
211
205
this . _log ( 'stopping' )
212
206
await Promise . all ( [
213
- this . _apiServer && stopServer ( this . _apiServer ) ,
214
- this . _gatewayServer && stopServer ( this . _gatewayServer ) ,
207
+ stopServers ( this . _apiServers ) ,
208
+ stopServers ( this . _gatewayServers ) ,
215
209
this . _ipfs && this . _ipfs . stop ( )
216
210
] )
217
211
this . _log ( 'stopped' )
0 commit comments