From adbbacc926adb0b026e3308daa20ba349b8a716d Mon Sep 17 00:00:00 2001 From: root Date: Fri, 17 Mar 2017 18:22:39 +0300 Subject: [PATCH 1/2] Catching request errors --- lib/models/apirequest.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/models/apirequest.js b/lib/models/apirequest.js index 8955a89..088aad4 100644 --- a/lib/models/apirequest.js +++ b/lib/models/apirequest.js @@ -41,6 +41,8 @@ DefaultTransporter.prototype.request = function(opts, auth, opt_callback) { } ).then(text => { this.wrapCallback_(opt_callback)(err, response, text); + }).catch(e => { + this.wrapCallback_(opt_callback)(e, null, null); }); }; From 414a34af327a420e8e64744dd744bfe59635cc1d Mon Sep 17 00:00:00 2001 From: root Date: Fri, 21 Apr 2017 15:15:32 +0300 Subject: [PATCH 2/2] Added timeout --- lib/models/apirequest.js | 22 +++++++++++++++------- package.json | 6 +++--- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/lib/models/apirequest.js b/lib/models/apirequest.js index 088aad4..dfe43cb 100644 --- a/lib/models/apirequest.js +++ b/lib/models/apirequest.js @@ -26,6 +26,15 @@ function getMissingParams (params, required) { return missing.length > 0 ? missing : null; } +function timeout(ms, promise) { + return new Promise(function(resolve, reject) { + setTimeout(function() { + reject(new Error("timeout")) + }, ms); + promise.then(resolve, reject); + }); +} + function DefaultTransporter(){ }; @@ -33,13 +42,12 @@ DefaultTransporter.prototype.request = function(opts, auth, opt_callback) { const url = (opts.uri || opts.url) + '?key=' + auth; let err = false; let response = null; - return fetch(url, opts).then( - result => { - response = result; - err = result.ok !== true; - return result.text(); - } - ).then(text => { + + return timeout(opts.timeout, fetch(url, opts)).then(result => { + response = result; + err = result.ok !== true; + return result.text(); + }).then(text => { this.wrapCallback_(opt_callback)(err, response, text); }).catch(e => { this.wrapCallback_(opt_callback)(e, null, null); diff --git a/package.json b/package.json index b6f407d..56fe873 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "request": "^2.67.0", "underscore": "^1.8.3" }, - "author": "Vladimir Hovsepyan ", + "author": "ROOT", "repository": { "type": "git", "url": "git+https://github.com/vladimir2492/react-cloud-vision-api.git" @@ -12,10 +12,10 @@ "devDependencies": {}, "directories": {}, "main": "index.js", - "name": "react-cloud-vision-api", + "name": "react-cloud-vision-api-ext", "optionalDependencies": {}, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, - "version": "0.2.0" + "version": "0.2.1" }