/* * myplatform.js * * main inerface used for the server platform * */ var util = require('util'); var db = require('../mydb.js'); /* /sys/do?get=activelist [list of active users] * /sys/do?get=entermatch&master=foo&slave=bar [enter master's match] * /sys/do?post=creatematch&master=foo&slave=bar [create match] * */ function system(req, res, next) { /* id contains routing token, req.query is a block/struct, key-val data structure containing GET params * id should be the main verb, action we want to do */ util.log('[sys] route id aka action: ' + req.params.id); if (req.params.id === 'do') { var data = ''; if (req.query.get != undefined) { util.log('[sys] get value: ' + req.query.get); if (req.query.get === 'activelist') { db.users.find({status: 'online'}, function(err, result) { if (err || !result) util.log('[sys] do?get=activelist failed or empty'); else { for (var i = 0; i < result.length; i++) { data += result[i].tag + '\n'; } res.send(data); } }); } /* slave enters a match here */ else if (req.query.get === 'entermatch' && req.query.master != undefined && req.query.master.length > 0 && req.query.slave != undefined && req.query.slave.length > 0) { util.log('[sys] get: ' + req.query.slave + ' entered ' + req.query.master + '\'s match'); res.send('entered match\n'); } else next(); } else if (req.query.post != undefined) /* post here refers to a param client would assign */ { util.log('[sys] client post value: ' + req.query.post); if (req.query.post === 'creatematch' && req.query.master != undefined && req.query.master.length > 0 && req.query.slave != undefined && req.query.slave.length > 0) { /* master creates a match */ /* how the fuck do I get a hold of slave? */ // invite slave, wait for reply, if accepted, keep that state! // respond to master util.log('[sys] post: ' + req.query.slave + ' accepted match'); res.send('match accepted\n'); } else { util.logger('[sys] unrecognized client data post'); next(); } } else { util.log('[sys] undefined GET params'); next(); } } else { /* unknown action */ next(); } } exports.system = system;