summaryrefslogtreecommitdiffstats
path: root/protoype/router/myplatform.js
blob: ef189aaece2416df3bdf14660b46a12e7baab8b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*
 * 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;