{
let scheme = this._server.scheme;
let port = this._server.port;
- let portSuffix = (scheme == 'http' && port == 80) || (scheme == 'https' && port == 443) ? '' : `:${port}`;
+ let portSuffix = this._server.port == this._server.defaultPort ? '' : `:${port}`;
if (path.charAt(0) != '/')
path = '/' + path;
- return `${scheme}://${this._server.host}portSuffix${path}`;
+ return `${scheme}://${this._server.host}${portSuffix}${path}`;
}
configure(server)
{
assert(server.scheme === 'http' || server.scheme === 'https');
- assert.equal(typeof(server.host), 'string');
- assert(!server.port || typeof(server.port) == 'number');
- assert(!server.auth || typeof(server.auth) == 'object');
- this._server = server;
+ assert.equal(typeof(server.host), 'string', 'host should be a string');
+ assert(!server.port || typeof(server.port) == 'number', 'port should be a number');
+
+ let auth = null;
+ if (server.auth) {
+ assert.equal(typeof(server.auth), 'object', 'auth should be a dictionary with username and password as keys');
+ assert.equal(typeof(server.auth.username), 'string', 'auth should contain a string username');
+ assert.equal(typeof(server.auth.password), 'string', 'auth should contain a string password');
+ auth = {
+ username: server.auth.username,
+ password: server.auth.password,
+ };
+ }
+
+ const defaultPort = server.scheme == 'http' ? 80 : 443;
+ this._server = {
+ scheme: server.scheme,
+ host: server.host,
+ port: server.port || defaultPort,
+ defaultPort: defaultPort,
+ auth: auth,
+ };
}
getJSON(path)
return new Promise(function (resolve, reject) {
let options = {
hostname: server.host,
- port: server.port || 80,
+ port: server.port,
auth: server.auth ? server.auth.username + ':' + server.auth.password : null,
method: method,
- path: path,
+ path: escape(path),
};
let request = (server.scheme == 'http' ? http : https).request(options, function (response) {