UNPKG

alpha-one

Version:

ideas about recurring tasks in Web- and Backend-Application building

184 lines (128 loc) 4.88 kB
// 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);