Skip to content
This repository has been archived by the owner on Jan 19, 2022. It is now read-only.

Commit

Permalink
Check for 429s on rate limited routes and forward rate limiting headers
Browse files Browse the repository at this point in the history
  • Loading branch information
Christopher De Cairos committed Nov 11, 2014
1 parent a84a4c4 commit c82effd
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,16 @@ module.exports = function (options) {
hReq.on('error', next);
hReq.on('response', function (resp) {
if (resp.statusCode !== 200) {
if (resp.statusCode === 429) {
res.set({
'x-ratelimit-limit': resp.headers['x-ratelimit-limit'],
'x-ratelimit-remaining': resp.headers['x-ratelimit-remaining'],
'retry-after': resp.headers['retry-after']
});
return res.json(resp.statusCode, {
error: 'Request Limit Exceeded'
});
}
return res.json(resp.statusCode || 500, {
error: resp.statusCode === 401 ? 'unauthorized' : 'There was an error on the login server'
});
Expand Down Expand Up @@ -370,6 +380,16 @@ module.exports = function (options) {
hReq.on('error', next);
hReq.on('response', function (resp) {
if (resp.statusCode !== 200) {
if (resp.statusCode === 429) {
res.set({
'x-ratelimit-limit': resp.headers['x-ratelimit-limit'],
'x-ratelimit-remaining': resp.headers['x-ratelimit-remaining'],
'retry-after': resp.headers['retry-after']
});
return res.json(resp.statusCode, {
error: 'Request Limit Exceeded'
});
}
return res.json(resp.statusCode || 500, {
error: 'There was an error on the login server'
});
Expand Down Expand Up @@ -435,6 +455,16 @@ module.exports = function (options) {
hReq.on('error', next);
hReq.on('response', function (resp) {
if (resp.statusCode !== 200) {
if (resp.statusCode === 429) {
res.set({
'x-ratelimit-limit': resp.headers['x-ratelimit-limit'],
'x-ratelimit-remaining': resp.headers['x-ratelimit-remaining'],
'retry-after': resp.headers['retry-after']
});
return res.json(resp.statusCode, {
error: 'Request Limit Exceeded'
});
}
return res.json(401, {
status: 'unauthorized'
});
Expand Down Expand Up @@ -482,6 +512,16 @@ module.exports = function (options) {
hReq.on('error', next);
hReq.on('response', function (resp) {
if (resp.statusCode !== 200) {
if (resp.statusCode === 429) {
res.set({
'x-ratelimit-limit': resp.headers['x-ratelimit-limit'],
'x-ratelimit-remaining': resp.headers['x-ratelimit-remaining'],
'retry-after': resp.headers['retry-after']
});
return res.json(resp.statusCode, {
error: 'Request Limit Exceeded'
});
}
return res.json(resp.statusCode || 500, {
error: 'There was an error on the login server'
});
Expand Down Expand Up @@ -531,6 +571,16 @@ module.exports = function (options) {
if (resp.statusCode !== 200 &&
resp.statusCode !== 400 &&
resp.statusCode !== 401) {
if (resp.statusCode === 429) {
res.set({
'x-ratelimit-limit': resp.headers['x-ratelimit-limit'],
'x-ratelimit-remaining': resp.headers['x-ratelimit-remaining'],
'retry-after': resp.headers['retry-after']
});
return res.json(resp.statusCode, {
error: 'Request Limit Exceeded'
});
}
return res.json(500, {
error: 'There was an error on the login server'
});
Expand Down

0 comments on commit c82effd

Please sign in to comment.