48 lines
975 B
JavaScript
48 lines
975 B
JavaScript
|
'use strict';
|
||
|
|
||
|
var URL = require('url-parse');
|
||
|
|
||
|
var debug = function() {};
|
||
|
if (process.env.NODE_ENV !== 'production') {
|
||
|
debug = require('debug')('sockjs-client:utils:url');
|
||
|
}
|
||
|
|
||
|
module.exports = {
|
||
|
getOrigin: function(url) {
|
||
|
if (!url) {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
var p = new URL(url);
|
||
|
if (p.protocol === 'file:') {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
var port = p.port;
|
||
|
if (!port) {
|
||
|
port = (p.protocol === 'https:') ? '443' : '80';
|
||
|
}
|
||
|
|
||
|
return p.protocol + '//' + p.hostname + ':' + port;
|
||
|
}
|
||
|
|
||
|
, isOriginEqual: function(a, b) {
|
||
|
var res = this.getOrigin(a) === this.getOrigin(b);
|
||
|
debug('same', a, b, res);
|
||
|
return res;
|
||
|
}
|
||
|
|
||
|
, isSchemeEqual: function(a, b) {
|
||
|
return (a.split(':')[0] === b.split(':')[0]);
|
||
|
}
|
||
|
|
||
|
, addPath: function (url, path) {
|
||
|
var qs = url.split('?');
|
||
|
return qs[0] + path + (qs[1] ? '?' + qs[1] : '');
|
||
|
}
|
||
|
|
||
|
, addQuery: function (url, q) {
|
||
|
return url + (url.indexOf('?') === -1 ? ('?' + q) : ('&' + q));
|
||
|
}
|
||
|
};
|