Token Cache bug fix and Rate Limiting

This commit is contained in:
Amish Shah
2015-12-16 18:32:01 +00:00
parent 4d47a05a81
commit da990f544a
4 changed files with 143 additions and 112 deletions

View File

@@ -64,10 +64,21 @@ export default class InternalClient {
ret.set('User-Agent', this.userAgentInfo.full);
return new Promise((resolve, reject) => {
ret.end((error, data) => {
if(error) {
return reject(error);
}
if (error) {
if (error.response && error.response.error && error.response.error.status && error.response.error.status === 429) {
if(data.headers["retry-after"] || data.headers["Retry-After"]){
var toWait = data.headers["retry-after"] || data.headers["Retry-After"];
toWait = parseInt(toWait);
setTimeout(() => {
this.apiRequest.apply(this, arguments).then(resolve).catch(reject);
}, toWait);
}
} else {
return reject(error);
}
}else{
resolve(data.body);
}
});
});
}

View File

@@ -28,7 +28,7 @@ export default class TokenCacher extends EventEmitter {
this.data = {};
}
setToken(email, password, token) {
setToken(email="", password="", token="") {
email = secureEmail(email, password);
var cipher = crypto.createCipher(algo, password)
var crypted = cipher.update("valid" + token, "utf8", "hex")
@@ -41,7 +41,7 @@ export default class TokenCacher extends EventEmitter {
fs.writeJson(this.savePath, this.data);
}
getToken(email, password) {
getToken(email="", password="") {
email = secureEmail(email, password);