teambot-club/teambot

View on GitHub
bot/middleware.js

Summary

Maintainability
B
5 hrs
Test Coverage
'use strict';

var botContext = require('bot/bot-context');

var Middleware = function() {

    function isLocalUser(userId) {
        var _isLocalUser = false;

        for (var idx = 0; idx < botContext.localUsers.length; idx++) {
            var user = botContext.localUsers[idx];
            if (userId == user.id) {
                _isLocalUser = true;
                break;
            }
        }

        return _isLocalUser;
    }

    var process = function(patterns, message) {

        if (!botContext.production) {
            if (!isLocalUser(message.user)) {
                return;
            }
        }

        var match = null;

        for (var index = 0; index < patterns.length; index++) {
            var pattern = patterns[index];

            var regex = new RegExp('(.*)' + pattern + '(.*)', 'i');
            match = message.text.match(regex);

            if (match) {
                for (var idx = 0; idx < match.length; idx++) {
                    var element = match[idx];
                    if (!element ||
                        (pattern.indexOf(element) != -1 &&
                            pattern.indexOf('(.*)') > pattern.indexOf(element))) {
                        match.splice(idx, 1);
                    }
                }
                message.match = match;
                break;
            }
        }

        return match;
    }

    return {
        process: process
    };
}();

module.exports = Middleware;