diff --git a/lib/rest/request.js b/lib/rest/request.js index 2189b04..e9c7290 100644 --- a/lib/rest/request.js +++ b/lib/rest/request.js @@ -67,71 +67,40 @@ export function Request(config) { options.timeout = config.timeout; } - function voiceRequestFunc() { - return new Promise((resolve, reject) => { - request(options, (error, response, body) => { - if (error) { - reject(error); - return; - } - const exceptionClass = { - 400: Exceptions.InvalidRequestError, - 401: Exceptions.AuthenticationError, - 404: Exceptions.ResourceNotFoundError, - 405: Exceptions.InvalidRequestError, - 500: Exceptions.ServerError, - } [response.statusCode] || Error; - - // if (response.statusCode >= 200 && isVoiceReq === true){ - // voiceRetryCount++; - // if (voiceRetryCount === 1){ - // options.url = apiVoiceUris[1] + config.authId + '/' + action; - // console.log(voiceRetryCount,options.url) - // } - // else if (voiceRetryCount === 2){ - // options.url = apiVoiceUris[2] + config.authId + '/' + action; - // console.log(voiceRetryCount,options.url) - // } - // else if (voiceRetryCount > 2){ - // resolve({ - // response: response, - // body: body - // }); - // } - // isVoiceReq = true; - // request(options); - // } - - if (!_.inRange(response.statusCode, 200, 300)) { - body = body || response.body; - // voiceRetryCount = 0; - if (typeof body === 'object') { - reject(new exceptionClass(JSON.stringify(body))); - } else { - reject(new exceptionClass(body)); - } - } - else { - let body = response.body; - let isObj = typeof _body === 'object' && _body !== null && !(_body instanceof Array) && !(_body instanceof Date) - if (isObj) { - _body['statusCode'] = response.statusCode; - } - // voiceRetryCount = 0; - resolve({ - response: response, - body: body - }); - } - }); - }); - } - if (isVoiceReq === true){ - var req = voiceRequestFunc(); - if (req.status >= 200){ - console.log(1) - } + voiceRequestFunc(options).then(function (response) { + var noRetry = response.response + if(noRetry.statusCode >= 500 ){ + voiceRetryCount++; + if(voiceRetryCount === 1){ + options.url = apiVoiceUris[1] + config.authId + '/' + action; + } + isVoiceReq = true; + voiceRequestFunc(options).then(function (response) { + var firstRetry = response.response; + if(firstRetry.statusCode >= 500 ) { + voiceRetryCount++; + if (voiceRetryCount === 2) { + options.url = apiVoiceUris[2] + config.authId + '/' + action; + } + isVoiceReq = true; + voiceRequestFunc(options).then(function (response) { + var secondRetry = response.response; + if(secondRetry.statusCode >= 500){ + console.log("d"); + return response; + } + console.log(secondRetry.statusCode,"c") + return response; + }) + } + console.log(firstRetry.statusCode, "b") + return response; + }) + } + console.log(noRetry.statusCode, "a") + return response; + }) } else { return new Promise((resolve, reject) => { @@ -171,3 +140,63 @@ export function Request(config) { } }; } + +function voiceRequestFunc(options) { + return new Promise((resolve, reject) => { + request(options, (error, response, body) => { + if (error) { + reject(error); + return; + } + const exceptionClass = { + 400: Exceptions.InvalidRequestError, + 401: Exceptions.AuthenticationError, + 404: Exceptions.ResourceNotFoundError, + 405: Exceptions.InvalidRequestError, + 500: Exceptions.ServerError, + } [response.statusCode] || Error; + + // if (response.statusCode >= 200 && isVoiceReq === true){ + // voiceRetryCount++; + // if (voiceRetryCount === 1){ + // options.url = apiVoiceUris[1] + config.authId + '/' + action; + // console.log(voiceRetryCount,options.url) + // } + // else if (voiceRetryCount === 2){ + // options.url = apiVoiceUris[2] + config.authId + '/' + action; + // console.log(voiceRetryCount,options.url) + // } + // else if (voiceRetryCount > 2){ + // resolve({ + // response: response, + // body: body + // }); + // } + // isVoiceReq = true; + // request(options); + // } + + if (!_.inRange(response.statusCode, 200, 300)) { + body = body || response.body; + // voiceRetryCount = 0; + if (typeof body === 'object') { + reject(new exceptionClass(JSON.stringify(body))); + } else { + reject(new exceptionClass(body)); + } + } + else { + let body = response.body; + let isObj = typeof _body === 'object' && _body !== null && !(_body instanceof Array) && !(_body instanceof Date) + if (isObj) { + _body['statusCode'] = response.statusCode; + } + // voiceRetryCount = 0; + resolve({ + response: response, + body: body + }); + } + }); + }); +}