| 
									
										
										
										
											2015-12-30 03:36:14 +00:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var PromiseA = require('bluebird'); | 
					
						
							|  |  |  | var https = PromiseA.promisifyAll(require('https')); | 
					
						
							|  |  |  | var http = PromiseA.promisifyAll(require('http')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function requestAsync(opts) { | 
					
						
							|  |  |  |   return new PromiseA(function (resolve, reject) { | 
					
						
							|  |  |  |     var httpr = (false === opts.secure) ? http : https; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-30 21:40:52 +00:00
										 |  |  |     if (opts.debug) { | 
					
						
							|  |  |  |       console.log('[HP] requestAsync opts'); | 
					
						
							|  |  |  |       console.log(opts); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-12-30 08:22:04 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-30 03:36:14 +00:00
										 |  |  |     var req = httpr.request(opts, function (res) { | 
					
						
							|  |  |  |       var data = ''; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       res.on('error', function (err) { | 
					
						
							|  |  |  |         if (opts.debug) { | 
					
						
							|  |  |  |           console.error('[Error] HP: bad request:'); | 
					
						
							|  |  |  |           console.error(err); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         reject(err); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |       res.on('data', function (chunk) { | 
					
						
							| 
									
										
										
										
											2015-12-30 21:40:52 +00:00
										 |  |  |         clearTimeout(req.__timtok); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-30 03:36:14 +00:00
										 |  |  |         if (opts.debug > 2) { | 
					
						
							|  |  |  |           console.log('HP: request chunk:'); | 
					
						
							|  |  |  |           console.log(chunk); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2015-12-30 21:40:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-30 03:36:14 +00:00
										 |  |  |         data += chunk.toString('utf8'); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |       res.on('end', function () { | 
					
						
							|  |  |  |         if (opts.debug > 2) { | 
					
						
							|  |  |  |           console.log('HP: request complete:'); | 
					
						
							|  |  |  |           console.log(data); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         resolve(data); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     req.on('error', reject); | 
					
						
							| 
									
										
										
										
											2015-12-30 21:40:52 +00:00
										 |  |  |     req.setTimeout(3 * 1000); | 
					
						
							|  |  |  |     req.on('socket', function (socket) { | 
					
						
							|  |  |  |       req.__timtok = setTimeout(function () { | 
					
						
							|  |  |  |         req.abort(); | 
					
						
							|  |  |  |       }, 3 * 1000); | 
					
						
							|  |  |  |       socket.setTimeout(3 * 1000); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2015-12-30 03:36:14 +00:00
										 |  |  |     req.end(); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = requestAsync; |