From 5319d8e9494d817da58b20fabacbdbda507250a8 Mon Sep 17 00:00:00 2001 From: Nathan Bowser Date: Thu, 15 Jan 2015 09:19:17 -0500 Subject: [PATCH] Adds the X-Ratelimit-Reset header. Useful so API users know when the rate limits will reset. --- index.js | 1 + tests/index.js | 3 +++ 2 files changed, 4 insertions(+) diff --git a/index.js b/index.js index bafa1ab..f76ec4a 100644 --- a/index.js +++ b/index.js @@ -32,6 +32,7 @@ module.exports = function (app, db) { if (!opts.skipHeaders) { res.set('X-RateLimit-Limit', limit.total) res.set('X-RateLimit-Remaining', limit.remaining) + res.set('X-RateLimit-Reset', Math.ceil(limit.reset / 1000)) // UTC epoch seconds } if (limit.remaining) return next() diff --git a/tests/index.js b/tests/index.js index ee20ce4..d9136b5 100644 --- a/tests/index.js +++ b/tests/index.js @@ -43,6 +43,7 @@ describe('rate-limiter', function () { .get('/route') .expect('X-RateLimit-Limit', 10) .expect('X-RateLimit-Remaining', item - 1) + .expect('X-RateLimit-Reset', 3600) .expect(200, function (e) {f(e)}) }) } @@ -52,6 +53,7 @@ describe('rate-limiter', function () { .get('/route') .expect('X-RateLimit-Limit', 10) .expect('X-RateLimit-Remaining', 0) + .expect('X-RateLimit-Reset', 3600) .expect('Retry-After', /\d+/) .expect(429, function (e) {f(e)}) }) @@ -62,6 +64,7 @@ describe('rate-limiter', function () { .get('/route') .expect('X-RateLimit-Limit', 10) .expect('X-RateLimit-Remaining', 9) + .expect('X-RateLimit-Reset', 7201) .expect(200, function (e) { clock.restore() f(e)