UNPKG

hatchyt

Version:
105 lines (83 loc) 3.63 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _database = require('../database'); var _database2 = _interopRequireDefault(_database); var _authenticate = require('../middleware/authenticate'); var _authenticate2 = _interopRequireDefault(_authenticate); var _express = require('express'); var _express2 = _interopRequireDefault(_express); var _publish = require('./publish'); var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _path = require('path'); var _path2 = _interopRequireDefault(_path); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var siteRouter = _express2.default.Router(); siteRouter.use(_authenticate2.default); function editSite(req, res) { _database2.default.get('SELECT id, domain, title, script, markup, style, config FROM sites WHERE id = ?', [req.params.site], function (err, row) { if (err) { res.send(err); } else { _database2.default.all('SELECT id, name, text from templates', function (err, templates) { res.render('editor', { site: row, templates: templates }); }); } }); } function deleteSite(req, res) { res.redirect('/'); _database2.default.get('SELECT domain from sites WHERE id = ?', [req.params.site], function (err, row) { _database2.default.exec('\n DELETE from sites WHERE domain=\'' + row.domain + '\';\n DELETE from tracking WHERE domain=\'' + row.domain + '\';\n DELETE from signups WHERE domain=\'' + row.domain + '\';\n '); }); } function createSite(req, res) { var domain = (0, _publish.parseRoot)(req.body.domain); _fs2.default.stat('output/' + domain, function (err, stats) { if (err) { _fs2.default.mkdir('.hatchyt/output/' + domain, function (e) { if (!e) _fs2.default.symlink('' + domain, '.hatchyt/output/www.' + domain, function (e) { if (e) throw new Error('Could not create symlink'); }); }); } }); _database2.default.run('INSERT INTO sites (domain, title) VALUES (?, ?)', [domain.domain, domain.domain], function (e) { console.log(e ? e : 'Inserted site:' + this.lastID); res.redirect('/site/' + this.lastID + '/'); }); } function trackSite(req, res) { res.cookie('tracked', 'true', { maxAge: '86400000' }); res.send(); if (/preview$/.test(req.headers.referer)) return null; _database2.default.run('INSERT INTO tracking (domain, referer, ip_address) VALUES (?, ?, ?)', [req.hostname, req.query.ref, req.ip], function (e) {}); } function signupSite(req, res) { res.send(); if (req.body.name) return; var domain = req.hostname; var email = req.body.email; var misc = JSON.stringify(req.body); _database2.default.run('INSERT INTO signups (domain, email, misc) VALUES (?, ?, ?)', [domain, email, misc], function (e) {}); } // Wire up the site routes siteRouter.post('/new', createSite); siteRouter.get('/:site/', editSite); siteRouter.get('/:site/delete/', deleteSite); siteRouter.get('/test/:site/', function (req, res) { var domain = req.params.site; res.sendFile('index.html', { root: _path2.default.join(process.cwd(), '.hatchyt', 'output', domain) }, function (e) { if (e) { res.status(404).send('Not found.'); } }); // TODO: fetch root path from settings, someday }); exports.default = { signupSite: signupSite, trackSite: trackSite, routes: siteRouter }; //# sourceMappingURL=site.js.map