model.js 1.04 KB
const compose = require('koa-compose');

class User {
    constructor(uid, userAgent, path, ip) {
        this._uid = uid;
        this._userAgent = userAgent;
        this._path = path;
        this._ip = ip;
    }

    ip(opts) {
        if (opts.excludes.includes(this._ip)) {
            return null;
        }

        return this._ip;
    }
}

class Resource {
    all() {
        return this;
    }

    includes(opts) {

    }

    excludes(opts) {
    }
}

class Metrics {
    qps(id, resource) {

    }
}

function makeContext(req, res) {
    const ctx = {req, res};

    return ctx;
}

const _rules = [];

function runRule() {
    const middleWare = compose(_rules);

    return (req, res, next) => {
        const context = makeContext(req, res);

        middleWare(context).then(() => {
            res.json({
                code: 200,
                message: '成功'
            });
        }).catch(next);
    };
}

function addRule(name, opts, action) {
    _rules.push(action.bind(opts));
}

module.exports = {
    rule: addRule,
    runRule
};