Initial commit
This commit is contained in:
51
utils/controllers.js
Normal file
51
utils/controllers.js
Normal file
@@ -0,0 +1,51 @@
|
||||
var express = require('express');
|
||||
var fs = require('fs');
|
||||
var log = require('log');
|
||||
|
||||
module.exports = function(app) {
|
||||
|
||||
log.debug("Loading controllers :");
|
||||
|
||||
fs.readdirSync(__dirname + '/../controllers').forEach(function(name) {
|
||||
|
||||
// views.js in controller, with function as pages (views.py for django)
|
||||
var obj = require('./../controllers/' + name + '/views');
|
||||
|
||||
// urls.js, just like django urls.py
|
||||
var urls = require('./../controllers/' + name + '/urls');
|
||||
name = obj.name || name;
|
||||
|
||||
// allow specifying the view engine
|
||||
if (obj.engine) app.set('view engine', obj.engine);
|
||||
|
||||
log.debug(' ' + name + ':');
|
||||
|
||||
for (let url of urls) {
|
||||
|
||||
app.get(url.url, ((url) => function(req, res, next) {
|
||||
|
||||
var path = obj[url.view](req, res, function(view) {
|
||||
|
||||
let viewPath = __dirname + '/../controllers/' + name + '/views/' + view;
|
||||
res.render(viewPath, res.locals, function(err, out) {
|
||||
if (err !== null) {
|
||||
log.pugerror(err);
|
||||
}
|
||||
res.send(out);
|
||||
});
|
||||
|
||||
}, next);
|
||||
|
||||
})(url));
|
||||
|
||||
log.debug(' ' + url.url + ' -> ' + name + '.' + url.view);
|
||||
}
|
||||
|
||||
log.debug();
|
||||
|
||||
// mount the app
|
||||
// parent.use(app);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
18
utils/create-url.js
Normal file
18
utils/create-url.js
Normal file
@@ -0,0 +1,18 @@
|
||||
let urls = {};
|
||||
|
||||
module.exports = function(req, res, next) {
|
||||
res.locals.urls = urls;
|
||||
return next();
|
||||
}
|
||||
|
||||
module.exports.url = function(url, viewName, urlName) {
|
||||
let ret = {
|
||||
url: url,
|
||||
view: viewName,
|
||||
name: urlName,
|
||||
};
|
||||
|
||||
urls[urlName] = ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
107
utils/log.js
Normal file
107
utils/log.js
Normal file
@@ -0,0 +1,107 @@
|
||||
var express = require('express');
|
||||
var http = require('http');
|
||||
|
||||
var log = {};
|
||||
|
||||
log.Color = {
|
||||
DEFAULT: 0,
|
||||
BLACK : 1,
|
||||
RED : 2,
|
||||
GREEN : 3,
|
||||
YELLOW : 4,
|
||||
BLUE : 5,
|
||||
MAGENTA: 6,
|
||||
CYAN : 7,
|
||||
ORANGE : 8,
|
||||
};
|
||||
|
||||
log.getColorCode = function(c) {
|
||||
switch (c) {
|
||||
case log.Color.DEFAULT: return '\u001b[0m';
|
||||
case log.Color.BLACK: return '\u001b[30m';
|
||||
case log.Color.RED: return '\u001b[31m';
|
||||
case log.Color.GREEN: return '\u001b[32m';
|
||||
case log.Color.YELLOW: return '\u001b[33m';
|
||||
case log.Color.BLUE: return '\u001b[34m';
|
||||
case log.Color.MAGENTA: return '\u001b[35m';
|
||||
case log.Color.CYAN: return '\u001b[36m';
|
||||
case log.Color.ORANGE: return '\u001b[38;5;202m';
|
||||
}
|
||||
}
|
||||
|
||||
log.write = function(elt, color) {
|
||||
console.log(log.getColorCode(color) + elt + log.getColorCode(log.Color.DEFAULT));
|
||||
}
|
||||
|
||||
log.ready = function(msg) {
|
||||
log.write('[RDY] ' + new Date() + ' ' + msg, log.Color.GREEN);
|
||||
}
|
||||
|
||||
log.request = function(req, res, time) {
|
||||
|
||||
var isStatic = req.url.substr(0, 7) === '/static' || req.url === '/favicon.ico';
|
||||
let mess = '[REQ] ' + new Date() + ' ';
|
||||
mess += (req.headers['x-forwarded-for'] || req.connection.remoteAddress);
|
||||
|
||||
if (time !== undefined) {
|
||||
mess += ' in ' + (" " + time).slice(-6) + ' ms';
|
||||
}
|
||||
|
||||
mess += ': ';
|
||||
|
||||
if (isStatic && req.url === '/favicon.ico') {
|
||||
mess += '/static';
|
||||
}
|
||||
|
||||
mess += req.url;
|
||||
|
||||
log.write(mess, isStatic ? log.Color.YELLOW : log.Color.CYAN);
|
||||
|
||||
}
|
||||
|
||||
log.socket = {};
|
||||
|
||||
log.socket.connect = function(socket) {
|
||||
|
||||
let mess = '[SOK] ' + new Date() + ' ';
|
||||
mess += (req.headers['x-forwarded-for'] || req.connection.remoteAddress);
|
||||
mess += ' disconnect';
|
||||
log.write(mess, log.Color.MAGENTA);
|
||||
|
||||
}
|
||||
|
||||
log.socket.disconnect = function(socket) {
|
||||
|
||||
let mess = '[SOK] ' + new Date() + ' ';
|
||||
mess += (req.headers['x-forwarded-for'] || req.connection.remoteAddress);
|
||||
mess += ' connect';
|
||||
log.write(mess, log.Color.MAGENTA);
|
||||
|
||||
}
|
||||
|
||||
|
||||
log.dberror = function(error) {
|
||||
log.write('[DBE] ' + new Date() + ' ' + error, log.Color.RED);
|
||||
}
|
||||
|
||||
log.prefetcherror = function(error) {
|
||||
log.write('[PFE] ' + new Date() + ' ' + error, log.Color.RED);
|
||||
}
|
||||
|
||||
log.mailerror = function(error) {
|
||||
log.write('[MLE] ' + new Date() + ' ' + error, log.Color.RED);
|
||||
}
|
||||
|
||||
log.debug = function(info) {
|
||||
log.write('[DBG] ' + (info !== undefined ? info : ''), log.Color.YELLOW);
|
||||
}
|
||||
|
||||
log.pugerror = function(error) {
|
||||
log.write('[PER] ' + new Date() + ' ' + error, log.Color.RED);
|
||||
}
|
||||
|
||||
log.warning = function(message) {
|
||||
log.write('[WRN] ' + new Date() + ' ' + message, log.Color.ORANGE);
|
||||
}
|
||||
|
||||
module.exports = log;
|
||||
Reference in New Issue
Block a user