Commit 35200aec authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Initial simple app.js.

Responds to auth and comments_meta requests.

With /auth we always respond with false.

With /comments_meta we only return comment counts.
parent fcc7de53
Loading
Loading
Loading
Loading

comments/app.js

0 → 100644
+75 −0
Original line number Diff line number Diff line
var config = require('./config');
var express = require('express');
var MySQLStore = require('connect-mysql-session')(express);
var DbFacade = require('./db_facade');
var Comments = require('./comments');

var app = express();

app.configure(function() {
    // Headers for Cross Origin Resource Sharing (CORS)
    app.use(function (req, res, next) {
        res.setHeader('Access-Control-Allow-Origin', '*');
        res.setHeader('Access-Control-Allow-Methods', 'POST, GET, OPTIONS');
        res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept');
        next();
    });

    app.use(express.cookieParser(config.sessionSecret));

    // Hack to set session cookie if session ID is set as a URL param.
    // This is because not all browsers support sending cookies via CORS
    app.use(function(req, res, next) {
        if (req.query.sid && req.query.sid != 'null') {
            var sid = req.query.sid.replace(/ /g, '+');
            req.sessionID = sid;
            req.signedCookies = req.signedCookies || {};
            req.signedCookies['sencha_docs'] = sid;
        }
        next();
    });

    // Use MongoDB for session storage
    app.use(express.session({
        secret: config.sessionSecret,
        key: 'sencha_docs',
        store: new MySQLStore(
            config.mysql.database,
            config.mysql.user,
            config.mysql.password
        )
    }));

    app.use(function(req, res, next) {
        // IE doesn't get content-type, so default to form encoded.
        if (!req.headers['content-type']) {
            req.headers['content-type'] = 'application/x-www-form-urlencoded';
        }
        next();
    });

    app.use(express.bodyParser());
    app.use(express.methodOverride());

    app.enable('jsonp callback');
});

// Authentication is disabled for now.
app.get('/auth/session', function(req, res) {
    res.json(false);
});

// Returns number of comments for each class/member,
app.get('/auth/:sdk/:version/comments_meta', function(req, res) {
    var db = new DbFacade(config.mysql);
    var comments = new Comments(db, req.params.sdk+"-"+req.params.version);
    comments.countsPerTarget(function(err, counts) {
        res.send({
            comments: counts,
            subscriptions: []
        });
    });
});

app.listen(config.port);
console.log("Server started at port "+config.port+"...");
+24 −0
Original line number Diff line number Diff line

module.exports = {
    sessionSecret: 'blahblahblah',
    port: 3000,

    // local comments database
    mysql: {
        user: "",
        password: "",
        database: "comments",
        host: "localhost"
    },

    // Sencha Forum database
    forumDb: {
        user: '',
        password: '',
        host: '',
        database: ''
    },

    // old MongoDB database
    mongoDb: 'mongodb://localhost:27017/comments'
};
+4 −4
Original line number Diff line number Diff line
@@ -7,10 +7,10 @@ require('./database');

var mysql = require('mysql');
var db = mysql.createConnection({
    host: config.db.host,
    user: config.db.user,
    password: config.db.password,
    database: config.db.dbName
    host: config.forumDb.host,
    user: config.forumDb.user,
    password: config.forumDb.password,
    database: config.forumDb.database
});

// Default date for all items that are missing a date.
+4 −2
Original line number Diff line number Diff line
@@ -5,7 +5,9 @@
    "author": "Rene Saarsoo <nene@triin.net>",
    "dependencies": {
        "mysql": "2.0.0-alpha3",
        "jasmine-node": "",
        "mongoose": ""
        "jasmine-node": "~1.0",
        "express": "~3.0",
        "connect-mysql-session": "~0.1",
        "mongoose": "~3.0"
    }
}