forked from RackHD/on-http
-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.js
90 lines (83 loc) · 2.34 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// Copyright 2015, EMC, Inc.
/* jshint node: true */
"use strict";
var di = require('di');
module.exports = Runner;
di.annotate(Runner, new di.Provide('app'));
di.annotate(Runner, new di.Inject(
'Http.Server',
'Services.Core',
'Services.Configuration',
'Profiles',
'Templates',
'Views',
'fileService',
'Promise',
'Http.Services.SkuPack',
'Http.Services.Api.Account',
'Http.Services.uPnP'
)
);
function Runner(
HttpService,
core,
configuration,
profiles,
templates,
views,
fileService,
Promise,
skuPack,
accountService,
uPnPService
) {
var services = [];
function start() {
return core.start()
.then(function() {
return Promise.all([profiles.load(), templates.load(), views.load()]);
})
.then(function() {
return fileService.start({
defaultBackend: {
type: configuration.get('httpFileServiceType', 'FileSystem'),
root: configuration.get('httpFileServiceRoot', './static/files')
}
});
})
.then(function() {
return skuPack.start(configuration.get('skuPackRoot', './skupack.d'));
})
.then(function() {
return accountService.start();
})
.then(function() {
if(configuration.get('enableUPnP', true)) {
return uPnPService.start();
}
})
.then(function() {
var endpoints = configuration.get('httpEndpoints', [{port: 8080}]);
services = Promise.map(endpoints, function(endpoint) {
return new HttpService(endpoint);
}).each(function(service) {
return service.createSwagger().then(function() {
return service.start();
});
});
return services;
});
}
function stop() {
return Promise.map(services, function(service) {
return service.stop();
})
.then(function() {
return core.stop();
});
}
return {
start: start,
stop: stop
};
}