You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					62 lines
				
				1.6 KiB
			
		
		
			
		
	
	
					62 lines
				
				1.6 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var EventEmitter = require('events').EventEmitter;
							 | 
						||
| 
								 | 
							
								var util = require('util');
							 | 
						||
| 
								 | 
							
								var utility = require('utility');
							 | 
						||
| 
								 | 
							
								var urllib = require('./urllib');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = HttpClient;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function HttpClient(options) {
							 | 
						||
| 
								 | 
							
								  EventEmitter.call(this);
							 | 
						||
| 
								 | 
							
								  options = options || {};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (options.agent !== undefined) {
							 | 
						||
| 
								 | 
							
								    this.agent = options.agent;
							 | 
						||
| 
								 | 
							
								    this.hasCustomAgent = true;
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    this.agent = urllib.agent;
							 | 
						||
| 
								 | 
							
								    this.hasCustomAgent = false;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (options.httpsAgent !== undefined) {
							 | 
						||
| 
								 | 
							
								    this.httpsAgent = options.httpsAgent;
							 | 
						||
| 
								 | 
							
								    this.hasCustomHttpsAgent = true;
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    this.httpsAgent = urllib.httpsAgent;
							 | 
						||
| 
								 | 
							
								    this.hasCustomHttpsAgent = false;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.defaultArgs = options.defaultArgs;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								util.inherits(HttpClient, EventEmitter);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								HttpClient.prototype.request = HttpClient.prototype.curl = function (url, args, callback) {
							 | 
						||
| 
								 | 
							
								  if (typeof args === 'function') {
							 | 
						||
| 
								 | 
							
								    callback = args;
							 | 
						||
| 
								 | 
							
								    args = null;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  args = args || {};
							 | 
						||
| 
								 | 
							
								  if (this.defaultArgs) {
							 | 
						||
| 
								 | 
							
								    args = utility.assign({}, [ this.defaultArgs, args ]);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  args.emitter = this;
							 | 
						||
| 
								 | 
							
								  args.agent = getAgent(args.agent, this.agent);
							 | 
						||
| 
								 | 
							
								  args.httpsAgent = getAgent(args.httpsAgent, this.httpsAgent);
							 | 
						||
| 
								 | 
							
								  return urllib.request(url, args, callback);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								HttpClient.prototype.requestThunk = function (url, args) {
							 | 
						||
| 
								 | 
							
								  args = args || {};
							 | 
						||
| 
								 | 
							
								  if (this.defaultArgs) {
							 | 
						||
| 
								 | 
							
								    args = utility.assign({}, [ this.defaultArgs, args ]);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  args.emitter = this;
							 | 
						||
| 
								 | 
							
								  args.agent = getAgent(args.agent, this.agent);
							 | 
						||
| 
								 | 
							
								  args.httpsAgent = getAgent(args.httpsAgent, this.httpsAgent);
							 | 
						||
| 
								 | 
							
								  return urllib.requestThunk(url, args);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function getAgent(agent, defaultAgent) {
							 | 
						||
| 
								 | 
							
								  return agent === undefined ? defaultAgent : agent;
							 | 
						||
| 
								 | 
							
								}
							 |