Commit aa6755d6 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Implement requests for retrieving subscriptions.

parent 195ae1aa
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -32,5 +32,16 @@ module.exports = {
            cls: target[1],
            member: target[2] || ""
        };
    },

    /**
     * Turns target object into array.
     */
    targetToJson: function(target) {
        return [
            target.type,
            target.cls,
            target.member
        ];
    }
};
 No newline at end of file
+29 −8
Original line number Diff line number Diff line
@@ -99,12 +99,23 @@ app.post('/auth/logout', function(req, res) {
// Requests for Comments

// Returns number of comments for each class/member,
app.get('/auth/:sdk/:version/comments_meta', services.comments, function(req, res) {
// and when user is logged in, all his subscriptions.
app.get('/auth/:sdk/:version/comments_meta', services.comments, services.subscriptions, function(req, res) {
    req.comments.countsPerTarget(function(err, counts) {
        if (req.session.user) {
            req.subscriptions.findTargetsByUser(req.session.user.id, function(err, targets) {
                res.send({
                    comments: counts,
                    subscriptions: targets.map(ApiAdapter.targetToJson)
                });
            });
        }
        else {
            res.send({
                comments: counts,
                subscriptions: []
            });
        }
    });
});

@@ -231,9 +242,19 @@ app.post('/auth/:sdk/:version/comments/:commentId/undo_delete', services.require
});

// Returns all subscriptions for logged in user
// For now does nothing.
app.get('/auth/:sdk/:version/subscriptions', function(req, res) {
    res.json({ subscriptions: [] });
app.get('/auth/:sdk/:version/subscriptions', services.subscriptions, function(req, res) {
    if (req.session.user.id) {
        req.subscriptions.findTargetsByUser(req.session.user.id, function(err, targets) {
            res.json({
                subscriptions: targets.map(ApiAdapter.targetToJson)
            });
        });
    }
    else {
        res.json({
            subscriptions: []
        });
    }
});

app.listen(config.port);
+10 −0
Original line number Diff line number Diff line
var DbFacade = require('./db_facade');
var Comments = require('./comments');
var Users = require('./users');
var Subscriptions = require('./subscriptions');
var ForumAuth = require('./forum_auth');
var config = require('./config');

@@ -27,6 +28,15 @@ module.exports = {
        next();
    },

    /**
     * Adds subscriptions service to request.
     */
    subscriptions: function(req, res, next) {
        var db = new DbFacade(config.mysql);
        req.subscriptions = new Subscriptions(db, req.params.sdk+"-"+req.params.version);
        next();
    },

    /**
     * Requires that user is logged in.
     */