Skip to content

Commit

Permalink
refactor(url parser): collect connection string options
Browse files Browse the repository at this point in the history
  • Loading branch information
Jessica Lord committed Nov 27, 2017
1 parent 60b08e3 commit a1ce65a
Showing 1 changed file with 18 additions and 10 deletions.
28 changes: 18 additions & 10 deletions lib/url_parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,16 +52,18 @@ module.exports = function(url, options, callback) {
});

let connectionString = connectionStrings.join(',') + '/';

if (!options.ssl && !result.search.match('ssl')) {
// Default to SSL true
connectionString += '?ssl=true';
} else if (!result.search) connectionString += '?'
let connectionStringOptions = [];

// Default to SSL true
if (!options.ssl && !result.search) {
connectionStringOptions.push('ssl=true');
} else if (!options.ssl && result.search && !result.search.match('ssl')) {
connectionStringOptions.push('ssl=true');
}

// Keep original uri options
if (result.search && !result.search.match('ssl')) {
connectionString += result.search.replace('?', '&');
} else if (result.search && result.search.match('ssl')) {
connectionString += result.search;
if (result.search) {
connectionStringOptions.push(result.search.replace('?', ''));
}

dns.resolveTxt(result.host, function(err, record) {
Expand All @@ -81,8 +83,14 @@ module.exports = function(url, options, callback) {
return callback(new Error('text record must only set `authSource` or `replicaSet`'));
}

connectionString += '&' + record;
connectionStringOptions.push(record);
}

// Add any options to the connection string
if (connectionStringOptions.length) {
connectionString += `?${connectionStringOptions.join('&')}`;
}

parseHandler(connectionString, options, callback);
});
});
Expand Down

0 comments on commit a1ce65a

Please sign in to comment.