diff --git a/lib/get.js b/lib/get.js index 6ac4053..eefa05c 100644 --- a/lib/get.js +++ b/lib/get.js @@ -4,19 +4,26 @@ var request = require("request"); var auth = require('node-weixin-auth'); var settings = require('node-weixin-settings'); +var DEFAULT_TIMEOUT = 10 * 1000; module.exports = function get(app, url, params, cb) { auth.determine(app, function () { settings.get(app.id, 'auth', function(authData) { params.access_token = authData.accessToken; url = url + util.toParam(params); - request(url, function (error, response, body) { - if (!error && response.statusCode === 200) { - //Return false if succeeded, else true - cb(false, JSON.parse(body)); - } else { - cb(true, {message: body}); - } + settings.get(app.id,'request',function (requestData) { + requestData = requestData || {}; + requestData.timeout = requestData.timeout || DEFAULT_TIMEOUT; + request(url, requestData, function (error, response, body) { + if (!error && response.statusCode === 200) { + //Return false if succeeded, else true + cb(false, JSON.parse(body)); + } else if (error) { + cb(true, {message: String(error)}); + } else { + cb(true, {message: body}); + } + }); }); }); diff --git a/test/test.js b/test/test.js index 518a1b7..a04fdab 100644 --- a/test/test.js +++ b/test/test.js @@ -2,6 +2,7 @@ var assert = require('assert'); var nodeWeixinUser = require('../'); var validator = require("validator"); +var settings = require('node-weixin-settings'); var app = { id: process.env.APP_ID, @@ -137,5 +138,22 @@ describe('node-weixin-user node module', function () { }); }); + it('should be timeout to get', function (done) { + var get = require('../lib/get'); + settings.set(app.id,'request',{ + timeout:1 + },function(){ + get(app, 'https://you.abc.cc.com/', { + }, function(error,data) { + assert.equal(data.message,'Error: ETIMEDOUT'); + settings.set(app.id,'request',{ + timeout:null + },function(){ + done(); + }); + }); + }); + }); + });