diff --git a/node_modules/c9/ratelimit.js b/node_modules/c9/ratelimit.js index a87a8e87..7871b58a 100644 --- a/node_modules/c9/ratelimit.js +++ b/node_modules/c9/ratelimit.js @@ -38,6 +38,9 @@ function ratelimit(key, duration, max) { // Returns a deep value from an object. E.g. resolveValue({user: {id: 5}}, "user.id") === 5 function resolveValue(obj, path) { + if (path === "*") + return "*"; + return path.split('.').reduce(function(prev, curr) { return prev ? prev[curr] : undefined; }, obj); diff --git a/node_modules/c9/ratelimit_test.js b/node_modules/c9/ratelimit_test.js index 65d05f34..13a798b7 100644 --- a/node_modules/c9/ratelimit_test.js +++ b/node_modules/c9/ratelimit_test.js @@ -47,6 +47,18 @@ describe("ratelimit", function() { }); }); + it("Should work with wildcard", function (done) { + var limiter = ratelimit("*", 100, 1); + limiter({params: {user: {id: "hey"}}}, null, function (err) { + assert(!err, err); + limiter({}, null, function (err) { + assert(err); + assert.equal(err.code, 429); + done(); + }); + }); + }); + it("Should work with parameters directly on req, if req is specified as the first part of the deep key", function (done) { var limiter = ratelimit("req.user.id", 100, 1); limiter({user: {id: "hey"}}, null, function (err) {