UNPKG

arrow-admin

Version:
71 lines (61 loc) 1.78 kB
// jscs:disable jsDoc var _ = require('lodash'), fs = require('fs-extra'), path = require('path'), util = require('../util'); function configure(arrow, app, config, prefix) { var token = String(Date.now()); if (config.env === 'development') { // re-generate the token when restarted arrow.on('stopped', function () { token = String(Date.now()); }); app.get(prefix + '/generate/token/:token', function (req, resp, next) { return resp.json({ // if the same token is passed back, we haven't yet restarted // if it's different, we're good success: req.params.token !== token }); }); app.post(prefix + '/generate/model/:name', function (req, resp, next) { var filename = util.generateModelName(config, req.params.name), dirname = path.dirname(filename); fs.mkdirp(dirname, function (err) { if (err) { return util.json(resp, { success: false, message: err.message }); } if (req.query.originalModelName) { var original = req.query.originalModelName.replace(/[/\\]/g, ''); var originalFilename = util.generateModelName(config, original); if (fs.existsSync(originalFilename)) { fs.unlinkSync(originalFilename); } } var suffix = 1; while (fs.existsSync(filename)) { filename = util.generateModelName(config, req.params.name + (++suffix)); } fs.writeFile(filename, req.body, function (err) { if (err) { return util.json(resp, { success: false, message: err.message }); } else { // send back the started timestamp as a token util.json(resp, { success: true, token: token }); arrow.emit('reload'); return; } }); }); }); } } exports.configure = configure;