fixUrl() properly handles search and hash parts.
This commit is contained in:
parent
28d5fb1822
commit
21bd5ba376
@ -74,17 +74,19 @@ function fibonacci(start) {
|
|||||||
//====================================================================
|
//====================================================================
|
||||||
|
|
||||||
// Fix URL if necessary.
|
// Fix URL if necessary.
|
||||||
var URL_RE = /^(?:(?:http|ws)(s)?:\/\/)?(.*?)\/*(?:\/api\/)?$/;
|
var URL_RE = /^(?:(?:http|ws)(s)?:\/\/)?(.*?)\/*(?:\/api\/)?(\?.*?)?(?:#.*)?$/;
|
||||||
function fixUrl(url) {
|
function fixUrl(url) {
|
||||||
var matches = URL_RE.exec(url);
|
var matches = URL_RE.exec(url);
|
||||||
var isSecure = !!matches[1];
|
var isSecure = !!matches[1];
|
||||||
var rest = matches[2];
|
var hostAndPath = matches[2];
|
||||||
|
var search = matches[3];
|
||||||
|
|
||||||
return [
|
return [
|
||||||
isSecure ? 'wss' : 'ws',
|
isSecure ? 'wss' : 'ws',
|
||||||
'://',
|
'://',
|
||||||
rest,
|
hostAndPath,
|
||||||
'/api/',
|
'/api/',
|
||||||
|
search,
|
||||||
].join('');
|
].join('');
|
||||||
}
|
}
|
||||||
exports.fixUrl = fixUrl;
|
exports.fixUrl = fixUrl;
|
||||||
|
@ -6,6 +6,8 @@ var expect = require('must');
|
|||||||
|
|
||||||
//====================================================================
|
//====================================================================
|
||||||
|
|
||||||
|
/* jshint mocha: true */
|
||||||
|
|
||||||
describe('fixUrl()', function () {
|
describe('fixUrl()', function () {
|
||||||
var fixUrl = require('./').fixUrl;
|
var fixUrl = require('./').fixUrl;
|
||||||
|
|
||||||
@ -34,5 +36,13 @@ describe('fixUrl()', function () {
|
|||||||
it('is not added if already present', function () {
|
it('is not added if already present', function () {
|
||||||
expect(fixUrl('ws://localhost/api/')).to.equal('ws://localhost/api/');
|
expect(fixUrl('ws://localhost/api/')).to.equal('ws://localhost/api/');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('removes the hash part', function () {
|
||||||
|
expect(fixUrl('ws://localhost/#foo')).to.equal('ws://localhost/api/');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('conserve the search part', function () {
|
||||||
|
expect(fixUrl('ws://localhost/?foo')).to.equal('ws://localhost/api/?foo');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user