Skip to content

Commit

Permalink
Merge f85ccc0 into de25bde
Browse files Browse the repository at this point in the history
  • Loading branch information
vartanbeno committed Mar 17, 2020
2 parents de25bde + f85ccc0 commit a656d4a
Show file tree
Hide file tree
Showing 15 changed files with 217 additions and 0 deletions.
8 changes: 8 additions & 0 deletions lib/asset.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ var
co = require('co'),

request = require('./request'),
url = require('./url'),
validation = require('./validation');

const
Expand Down Expand Up @@ -41,6 +42,13 @@ module.exports = function (assetOptions, ensureAuthHeaders, self) {
// apply additional optional settings if supplied
settings = validation.applyOptionalParameters(assetOptions, settings);

const result = url.parseURL(settings.host);
if (!validation.isEmpty(result)) {
settings.host = result.host;
settings.port = result.port;
settings.secure = result.secure;
}

// ensure request is setup
req = new request.Request(settings);
req.on(EVENT_REQUEST, (data) => (self.emit(EVENT_REQUEST, data)));
Expand Down
8 changes: 8 additions & 0 deletions lib/campaign.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ var
co = require('co'),
fs = require('fs'),
request = require('./request'),
url = require('./url'),
validation = require('./validation');

const
Expand Down Expand Up @@ -40,6 +41,13 @@ module.exports = function (campaignOptions, ensureAuthHeaders, self) {
// apply additional optional settings if supplied
settings = validation.applyOptionalParameters(campaignOptions, settings);

const result = url.parseURL(settings.host);
if (!validation.isEmpty(result)) {
settings.host = result.host;
settings.port = result.port;
settings.secure = result.secure;
}

// ensure request is setup
req = new request.Request(settings);
req.on(EVENT_REQUEST, (data) => (self.emit(EVENT_REQUEST, data)));
Expand Down
8 changes: 8 additions & 0 deletions lib/claim.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ var
co = require('co'),

request = require('./request'),
url = require('./url'),
validation = require('./validation');

const
Expand Down Expand Up @@ -39,6 +40,13 @@ module.exports = function (claimOptions, ensureAuthHeaders, self) {
// apply additional optional settings if supplied
settings = validation.applyOptionalParameters(claimOptions, settings);

const result = url.parseURL(settings.host);
if (!validation.isEmpty(result)) {
settings.host = result.host;
settings.port = result.port;
settings.secure = result.secure;
}

// ensure request is setup
req = new request.Request(settings);
req.on(EVENT_REQUEST, (data) => (self.emit(EVENT_REQUEST, data)));
Expand Down
8 changes: 8 additions & 0 deletions lib/content.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ var
co = require('co'),

request = require('./request'),
url = require('./url'),
validation = require('./validation');

const
Expand Down Expand Up @@ -45,6 +46,13 @@ module.exports = function (contentOptions, ensureAuthHeaders, self) {
// apply additional optional settings if supplied
settings = validation.applyOptionalParameters(contentOptions, settings);

const result = url.parseURL(settings.host);
if (!validation.isEmpty(result)) {
settings.host = result.host;
settings.port = result.port;
settings.secure = result.secure;
}

// ensure request is setup
req = new request.Request(settings);
req.on(EVENT_REDIRECT, (data) => (self.emit(EVENT_REDIRECT, data)));
Expand Down
8 changes: 8 additions & 0 deletions lib/device.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ var
co = require('co'),

request = require('./request'),
url = require('./url'),
validation = require('./validation');

const
Expand Down Expand Up @@ -41,6 +42,13 @@ module.exports = function (deviceOptions, ensureAuthHeaders, self) {
// apply additional optional settings if supplied
settings = validation.applyOptionalParameters(deviceOptions, settings);

const result = url.parseURL(settings.host);
if (!validation.isEmpty(result)) {
settings.host = result.host;
settings.port = result.port;
settings.secure = result.secure;
}

// ensure request is setup
req = new request.Request(settings);
req.on(EVENT_REQUEST, (data) => (self.emit(EVENT_REQUEST, data)));
Expand Down
8 changes: 8 additions & 0 deletions lib/key.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ var
co = require('co'),

request = require('./request'),
url = require('./url'),
validation = require('./validation');

const
Expand Down Expand Up @@ -58,6 +59,13 @@ module.exports = function (keyOptions, clientId, secret, self) {
// apply additional optional settings if supplied
settings = validation.applyOptionalParameters(keyOptions, settings);

const result = url.parseURL(settings.host);
if (!validation.isEmpty(result)) {
settings.host = result.host;
settings.port = result.port;
settings.secure = result.secure;
}

// ensure request is setup
req = new request.Request(settings);
req.on(EVENT_REQUEST, (data) => (self.emit(EVENT_REQUEST, data)));
Expand Down
8 changes: 8 additions & 0 deletions lib/location.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ var
co = require('co'),

request = require('./request'),
url = require('./url'),
validation = require('./validation');

const
Expand Down Expand Up @@ -39,6 +40,13 @@ module.exports = function (locationOptions, ensureAuthHeaders, self) {
// apply additional optional settings if supplied
settings = validation.applyOptionalParameters(locationOptions, settings);

const result = url.parseURL(settings.host);
if (!validation.isEmpty(result)) {
settings.host = result.host;
settings.port = result.port;
settings.secure = result.secure;
}

// ensure request is setup
req = new request.Request(settings);
req.on(EVENT_REQUEST, (data) => (self.emit(EVENT_REQUEST, data)));
Expand Down
8 changes: 8 additions & 0 deletions lib/music.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ var
co = require('co'),

request = require('./request'),
url = require('./url'),
validation = require('./validation');

const
Expand Down Expand Up @@ -43,6 +44,13 @@ module.exports = function (musicOptions, ensureAuthHeaders, self) {
// apply additional optional settings if supplied
settings = validation.applyOptionalParameters(musicOptions, settings);

const result = url.parseURL(settings.host);
if (!validation.isEmpty(result)) {
settings.host = result.host;
settings.port = result.port;
settings.secure = result.secure;
}

// ensure request is setup
req = new request.Request(settings);
req.on(EVENT_REQUEST, (data) => (self.emit(EVENT_REQUEST, data)));
Expand Down
8 changes: 8 additions & 0 deletions lib/playback.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ var
co = require('co'),

request = require('./request'),
url = require('./url'),
validation = require('./validation');

const
Expand Down Expand Up @@ -39,6 +40,13 @@ module.exports = function (playbackOptions, ensureAuthHeaders, self) {
// apply additional optional settings if supplied
settings = validation.applyOptionalParameters(playbackOptions, settings);

const result = url.parseURL(settings.host);
if (!validation.isEmpty(result)) {
settings.host = result.host;
settings.port = result.port;
settings.secure = result.secure;
}

// ensure request is setup
req = new request.Request(settings);
req.on(EVENT_REQUEST, (data) => (self.emit(EVENT_REQUEST, data)));
Expand Down
8 changes: 8 additions & 0 deletions lib/player.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ var
co = require('co'),
events = require('events'),
io = require('socket.io-client'),
url = require('./url'),
validation = require('./validation');

let
Expand Down Expand Up @@ -46,6 +47,13 @@ module.exports = function (playerOptions, ensureAuthHeaders, self) {
// apply additional optional settings if supplied
settings = validation.applyOptionalParameters(playerOptions, settings);

const result = url.parseURL(settings.host);
if (!validation.isEmpty(result)) {
settings.host = result.host;
settings.port = result.port;
settings.secure = result.secure;
}

self.settings = () => (settings);

self.connect = (options, socketEventSubscriber) => co(function *() {
Expand Down
8 changes: 8 additions & 0 deletions lib/provision.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ var
co = require('co'),

request = require('./request'),
url = require('./url'),
validation = require('./validation');

const
Expand Down Expand Up @@ -42,6 +43,13 @@ module.exports = function (provisionOptions, ensureAuthHeaders, self) {
// apply additional optional settings if supplied
settings = validation.applyOptionalParameters(provisionOptions, settings);

const result = url.parseURL(settings.host);
if (!validation.isEmpty(result)) {
settings.host = result.host;
settings.port = result.port;
settings.secure = result.secure;
}

// ensure request is setup
req = new request.Request(settings);
req.on(EVENT_REQUEST, (data) => (self.emit(EVENT_REQUEST, data)));
Expand Down
8 changes: 8 additions & 0 deletions lib/relationship.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ var
co = require('co'),

request = require('./request'),
url = require('./url'),
validation = require('./validation');

const
Expand Down Expand Up @@ -39,6 +40,13 @@ module.exports = function (relationshipsOptions, ensureAuthHeaders, self) {
// apply additional optional settings if supplied
settings = validation.applyOptionalParameters(relationshipsOptions, settings);

const result = url.parseURL(settings.host);
if (!validation.isEmpty(result)) {
settings.host = result.host;
settings.port = result.port;
settings.secure = result.secure;
}

// ensure request is setup
req = new request.Request(settings);
req.on(EVENT_REQUEST, (data) => (self.emit(EVENT_REQUEST, data)));
Expand Down
8 changes: 8 additions & 0 deletions lib/settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ var
co = require('co'),

request = require('./request'),
url = require('./url'),
validation = require('./validation');

const
Expand Down Expand Up @@ -39,6 +40,13 @@ module.exports = function (settingsOptions, ensureAuthHeaders, self) {
// apply additional optional settings if supplied
settings = validation.applyOptionalParameters(settingsOptions, settings);

const result = url.parseURL(settings.host);
if (!validation.isEmpty(result)) {
settings.host = result.host;
settings.port = result.port;
settings.secure = result.secure;
}

// ensure request is setup
req = new request.Request(settings);
req.on(EVENT_REQUEST, (data) => (self.emit(EVENT_REQUEST, data)));
Expand Down
49 changes: 49 additions & 0 deletions lib/url.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
const { URL } = require('url');

const PROTOCOL_HTTP = 'http:';
const PROTOCOL_HTTPS = 'https:';

/**
* Parse the input (URL string) to get its hostname, port, and protocol.
* In the case that it's not parsable and it throws an error, return an empty object.
* We do this to preserve backward compatibility.
* Note: this method assumes you are using either HTTP or HTTPS protocols. It assumes HTTPS if protocol isn't provided.
* @param {String} input The URL.
* @param {Object} output An object containing host, port, and secure properties.
* @returns {Object} The object containing valid host, port, and secure keys based on the input.
*/
const parseURL = (input) => {
const output = {};

if (typeof(input) !== 'string') {
return output;
}

input = input.trim();
if (input === '') {
return output;
}

if (!input.startsWith(PROTOCOL_HTTP) && !input.startsWith(PROTOCOL_HTTPS)) {
input = PROTOCOL_HTTPS + input;
}

let url;
try {
url = new URL(input);
} catch (e) {
return output;
}

const { hostname, port, protocol } = url;

output.host = hostname;
output.port = port;
output.secure = protocol === PROTOCOL_HTTPS;

return output;
};

module.exports = {
parseURL
};

0 comments on commit a656d4a

Please sign in to comment.