/
raml-store.js
64 lines (56 loc) · 2.1 KB
/
raml-store.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
'use strict';
var
express = require('express'),
debug = require('debug')('raml-store');
var
path = require('path'),
fs = require('fs');
// creates dist-override/index.html synchronously
var
indexFile,
apiDesignerRoot;
try { // support both npm 2.x and 3.x
// npm 2.x subdir
indexFile = fs.readFileSync(path.join(__dirname, 'node_modules/api-designer/dist/index.html'), 'utf8');
apiDesignerRoot = 'node_modules';
} catch (err) {
// npm 3.x brother dir
indexFile = fs.readFileSync(path.join(__dirname, '..', '/api-designer/dist/index.html'), 'utf8');
apiDesignerRoot = '..';
}
indexFile = indexFile.replace(/<\/body\>/g, '<script src="angular-persistence.js"></script></body>');
fs.writeFileSync(path.join(__dirname, 'dist-override/index.html'), indexFile, 'utf8');
function serveStatic (req, res, next) {
if (req.url === '/index.html' || req.url === '/') {
return res.sendFile('/index.html', { root: path.join(__dirname, 'dist-override') });
}
if (req.url === '/angular-persistence.js') {
return res.sendFile('/angular-persistence.js', { root: path.join(__dirname, 'dist-override') });
}
var requestedFile = req.url.replace(/\?.*/, '');
debug('requested:', requestedFile);
res.sendFile(requestedFile, { root: path.join(__dirname, apiDesignerRoot, '/api-designer/dist') }, function (err) {
if (err && err.code === 'ENOENT') return res.sendStatus(404);
if (err) return next(err);
});
}
var ramlServe;
module.exports = ramlServe = function (ramlPath) {
var router = express.Router();
var bodyParser = require('body-parser');
var api = require('./api')(ramlPath);
router.use(bodyParser.json());
router.get('/files/*', api.get);
router.post('/files/*', api.post);
router.put('/files/*', api.put);
router.delete('/files/*', api.delete);
router.use('/', serveStatic);
return router;
};
if (module.parent === null) {
var app = express();
app.use('/', ramlServe(process.env.RAML_DATAPATH));
var server = app.listen(process.env.PORT || 3000, function () {
console.log('Express server listening on ' + server.address().address + ':' + server.address().port + '/');
});
}