alpha-one
Version:
ideas about recurring tasks in Web- and Backend-Application building
184 lines (128 loc) • 4.88 kB
JavaScript
// Generated by CoffeeScript 1.7.1
(function() {
var TRM, TYPES, alert, app, authom, badge, debug, echo, express, express_options, filter, help, info, log, login, njs_path, request_count, request_counter_middleware, respond, rpr, server_options, service_credential_records, service_credentials, static_route, teacup, templates, test_middleware, warn, whisper, write_ok_html_header, _i, _len;
njs_path = require('path');
TYPES = require('coffeenode-types');
TRM = require('coffeenode-trm');
rpr = TRM.rpr.bind(TRM);
badge = 'using-express';
log = TRM.get_logger('plain', badge);
info = TRM.get_logger('info', badge);
whisper = TRM.get_logger('whisper', badge);
alert = TRM.get_logger('alert', badge);
debug = TRM.get_logger('debug', badge);
warn = TRM.get_logger('warn', badge);
help = TRM.get_logger('help', badge);
echo = TRM.echo.bind(TRM);
/* https://github.com/goodeggs/teacup */
teacup = require('teacup');
templates = require('./templates');
express = require('express');
authom = require('authom');
TRM.dir(authom);
write_ok_html_header = function(request, response) {
var headers, status_code;
status_code = 200;
headers = {
'Content-Type': 'text/html',
'Connection': 'keep-alive',
'Transfer-Encoding': 'chunked'
};
return response.writeHead(status_code, headers);
};
respond = function(request, response, next) {
write_ok_html_header(request, response);
response.write("<link rel='shortcut icon' href='/public/favicon.ico?v=" + (1 * new Date()) + "'>");
response.write("<div>RQ#" + request_count + "</div>");
return response.end("<div>hello world</div>");
};
request_counter_middleware = function(request, response, next) {
request['count'] = (request_count += 1);
return next();
};
request_count = 0;
login = function(user, password, handler) {
debug("authenticating " + user + ":" + password);
return handler(null, true);
};
server_options = {
'host': 'foo.bar',
'port': 80
};
express_options = {
'logger': {
'format': 'short',
'format': 'tiny',
'format': 'default',
'format': 'mingkwai',
'format': 'dev'
}
};
express.logger.format('mingkwai', ':method :url :status :res[content-length] - :response-time ms');
app = express();
app.use(request_counter_middleware);
app.use(express.logger(express_options['logger']['format']));
/* https://github.com/wdavidw/node-connect-coffee-script */
/* http://learnboost.github.io/stylus/docs/middleware.html */
service_credential_records = [
{
service: "github",
id: "7e38d12b740a339b2d31",
secret: "116e41bd4cd160b7fae2fe8cc79c136a884928c3"
}
];
for (_i = 0, _len = service_credential_records.length; _i < _len; _i++) {
service_credentials = service_credential_records[_i];
TRM.log(TRM.rainbow(service_credentials));
authom.createServer(service_credentials);
}
app.get("/", function(req, res) {
debug('app.get', "/");
return res.send("<html>" + "<body style='font: 300% sans-serif'>" + "<div><a href='/auth/github'>Who am I on Github?</a></div>" + "</body>" + "</html>");
});
authom.on("auth", function(req, res, data) {
debug('authom.on', "auth");
return res.send("<html>" + "<body>" + "<div style='font: 300% sans-serif'>You are " + data.id + " on " + data.service + ".</div>" + "<pre><code>" + JSON.stringify(data, null, 2) + "</code></pre>" + "</body>" + "</html>");
});
authom.on("error", function(req, res, data) {
debug('authom.on', "error");
return res.error("An error occurred: " + JSON.stringify(data));
});
app.get('/auth/:service', authom.app);
authom.listen(app);
app.get("/auth/:service", authom.app);
authom.on("auth", function(req, res, data) {
req.session.user = data;
return res.redirect("/dashboard");
});
filter = function(req, res, next) {
if (!!req.session.user) {
return next();
} else {
return res.redirect("/");
}
};
app.get("/dashboard", filter, function(req, res) {
return res.render("dashboard", {
title: "dashboard"
});
});
test_middleware = function() {
debug("setting up test_middleware");
return function(request, response, next) {
debug('test');
write_ok_html_header(request, response);
response.write(templates.test({
'request-count': request['count']
}));
return response.end();
};
};
app.use('/test', test_middleware());
static_route = njs_path.join(__dirname, '..', 'public');
info("static route: " + static_route);
app.use('/public', express["static"](static_route));
app.use(respond);
app.listen(server_options['port']);
log(TRM.green("listening to " + server_options['host'] + ":" + server_options['port']));
}).call(this);