| /* |
| * index.js: Top level include for node-http-proxy helpers |
| * |
| * (C) 2010 Nodejitsu Inc. |
| * MIT LICENCE |
| * |
| */ |
| |
| var fs = require('fs'), |
| path = require('path'); |
| |
| var fixturesDir = path.join(__dirname, '..', 'fixtures'); |
| |
| // |
| // @https {Object} |
| // Returns the necessary `https` credentials. |
| // |
| Object.defineProperty(exports, 'https', { |
| get: function () { |
| delete this.https; |
| return this.https = { |
| key: fs.readFileSync(path.join(fixturesDir, 'agent2-key.pem'), 'utf8'), |
| cert: fs.readFileSync(path.join(fixturesDir, 'agent2-cert.pem'), 'utf8') |
| }; |
| } |
| }); |
| |
| // |
| // @protocols {Object} |
| // Returns an object representing the desired protocols |
| // for the `proxy` and `target` server. |
| // |
| Object.defineProperty(exports, 'protocols', { |
| get: function () { |
| delete this.protocols; |
| return this.protocols = { |
| target: exports.argv.target || 'http', |
| proxy: exports.argv.proxy || 'http' |
| }; |
| } |
| }); |
| |
| // |
| // @nextPort {number} |
| // Returns an auto-incrementing port for tests. |
| // |
| Object.defineProperty(exports, 'nextPort', { |
| get: function () { |
| var current = this.port || 9050; |
| this.port = current + 1; |
| return current; |
| } |
| }); |
| |
| // |
| // @nextPortPair {Object} |
| // Returns an auto-incrementing pair of ports for tests. |
| // |
| Object.defineProperty(exports, 'nextPortPair', { |
| get: function () { |
| return { |
| target: this.nextPort, |
| proxy: this.nextPort |
| }; |
| } |
| }); |
| |
| // |
| // ### function describe(prefix) |
| // #### @prefix {string} Prefix to use before the description |
| // |
| // Returns a string representing the protocols that this suite |
| // is testing based on CLI arguments. |
| // |
| exports.describe = function (prefix, base) { |
| prefix = prefix || ''; |
| base = base || 'http'; |
| |
| function protocol(endpoint) { |
| return exports.protocols[endpoint] === 'https' |
| ? base + 's' |
| : base; |
| } |
| |
| return [ |
| 'node-http-proxy', |
| prefix, |
| [ |
| protocol('proxy'), |
| '-to-', |
| protocol('target') |
| ].join('') |
| ].filter(Boolean).join('/'); |
| }; |
| |
| // |
| // Expose the CLI arguments |
| // |
| exports.argv = require('optimist').argv; |
| |
| // |
| // Export additional helpers for `http` and `websockets`. |
| // |
| exports.http = require('./http'); |
| exports.ws = require('./ws'); |