'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; }