Skip to content

Commit

Permalink
v0.1.4
Browse files Browse the repository at this point in the history
  • Loading branch information
Zod- committed Jan 30, 2016
1 parent e2312d5 commit 969964d
Show file tree
Hide file tree
Showing 5 changed files with 121 additions and 14 deletions.
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "jsVideoUrlParser",
"version": "0.1.3",
"version": "0.1.4",
"homepage": "https://github.com/Zod-/jsVideoUrlParser",
"authors": [{
"name": "Julian Hangstörfer",
Expand Down
36 changes: 27 additions & 9 deletions dist/jsVideoUrlParser.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,11 @@ URLParser.prototype.create = function (op) {
}
return undefined;
};
/*jshint unused:true */
var urlParser = new URLParser();
/*jshint unused:false */

if (typeof module !== undefined && module.exports) {
module.exports = urlParser;
}

/*jshint unused:false */
function cloneObject(obj) {
Expand All @@ -67,19 +69,30 @@ function cloneObject(obj) {
return temp;
}

//http://stackoverflow.com/a/1099670
/*jshint unused:false */
function getQueryParams(qs) {
/*jshint unused:true */
"use strict";
qs = qs.split("+").join(" ");
if (typeof qs !== 'string') {
return {};
}
qs = qs.split('+').join(' ');

var params = {},
tokens,
re = /[\?#&]([^=]+)=([^&#]*)/g;
match = qs.match(
/(?:[\?](?:[^=]+)=(?:[^&#]*)(?:[&](?:[^=]+)=(?:[^&#]*))*(?:[#].*)?)|(?:[#].*)/
),
split;

while (tokens = re.exec(qs)) {
params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);
if (match === null) {
return {};
}

split = match[0].substr(1).split(/[&#=]/);

for (var i = 0; i < split.length; i += 2) {
params[decodeURIComponent(split[i])] =
decodeURIComponent(split[i + 1] || '');
}

return params;
Expand All @@ -89,6 +102,10 @@ function getQueryParams(qs) {
function combineParams(op) {
/*jshint unused:true */
"use strict";
if (typeof op !== 'object') {
return '';
}
op.params = op.params || {};
var combined = '',
i = 0,
keys = Object.keys(op.params);
Expand Down Expand Up @@ -135,7 +152,8 @@ function getTime(timeString) {
timePairs = timeString.split(' ');

for (var i = 0; i < timePairs.length; i += 2) {
totalSeconds += parseInt(timePairs[i], 10) * timeValues[timePairs[i + 1] || 's'];
totalSeconds += parseInt(timePairs[i], 10) *
timeValues[timePairs[i + 1] || 's'];
}
return totalSeconds;
}
Expand Down
2 changes: 1 addition & 1 deletion dist/jsVideoUrlParser.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "js-video-url-parser",
"version": "0.1.3",
"version": "0.1.4",
"description": "A parser to extract provider, video id, starttime and others from YouTube, Vimeo, ... urls",
"main": "dist/jsVideoUrlParser.js",
"repository": {
Expand Down
93 changes: 91 additions & 2 deletions tests/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ function assertUrlTest(assert, tests) {
});
}

QUnit.test("urlParser Object", function (assert) {
QUnit.test("urlParser Tests", function (assert) {
"use strict";
var parser = new URLParser();

Expand All @@ -33,7 +33,10 @@ QUnit.test("urlParser Object", function (assert) {
defaultFormat: 'long',
formats: {
long: function (vi, params) {
return {videoInfo: vi, params: params};
return {
videoInfo: vi,
params: params
};
}
}
});
Expand Down Expand Up @@ -84,6 +87,12 @@ QUnit.test("urlParser Object", function (assert) {

assert.strictEqual(parser.parse('http://abc.com'), undefined, 'No .parse');
assert.strictEqual(parser.create(createObj3), undefined, 'No .create');

for (var plugin in urlParser.plugins) {
if (urlParser.plugins.hasOwnProperty(plugin)) {
assert.notStrictEqual(urlParser.plugins[plugin].defaultFormat, undefined, 'Defaultformat not undefined ' + plugin);
}
}
});

QUnit.test("TimeString Parser", function (assert) {
Expand Down Expand Up @@ -121,6 +130,86 @@ QUnit.test("TimeString Parser", function (assert) {
}
});

QUnit.test("GetQueryParams Tests", function (assert) {
"use strict";
assert.deepEqual(getQueryParams(undefined), {}, 'Undefined argument');
assert.deepEqual(getQueryParams([]), {}, 'Not a string argument');
assert.deepEqual(getQueryParams('http://foo.bar/test'), {}, 'No params');
assert.deepEqual(getQueryParams('http://foo.bar/test?foo=bar'), {
foo: 'bar'
}, '?foo=bar');
assert.deepEqual(getQueryParams('http://foo.bar/test?foo=bar&'), {
foo: 'bar'
}, '?foo=bar&');
assert.deepEqual(getQueryParams('http://foo.bar/test#foo=bar'), {
foo: 'bar'
}, '#foo=bar');
assert.deepEqual(getQueryParams('http://foo.bar/test#foo'), {
foo: ''
}, '#foo');
assert.deepEqual(getQueryParams('http://foo.bar/test?foo=bar&faz=baz'), {
foo: 'bar',
faz: 'baz'
}, '?foo=bar&faz=baz');
assert.deepEqual(getQueryParams('http://foo.bar/test?foo=bar&faz=baz#fiz=biz'), {
foo: 'bar',
faz: 'baz',
fiz: 'biz'
}, '?foo=bar&faz=baz#fiz=biz');
assert.deepEqual(getQueryParams('http://foo.bar/test?foo=bar&faz=baz#fiz'), {
foo: 'bar',
faz: 'baz',
fiz: ''
}, '?foo=bar&faz=baz#fiz');
});

QUnit.test("CombineParams Tests", function (assert) {
"use strict";
assert.equal(combineParams(undefined), '', 'Undefined argument');
assert.equal(combineParams({}), '', 'No params object');

assert.equal(combineParams({
params: {
foo: 'bar'
}
}), '?foo=bar', "{foo:'bar'}");
assert.equal(combineParams({
params: {
foo: 'bar',
faz: 'baz'
}
}), '?faz=baz&foo=bar', "{foo:'bar',faz:'baz'}");
assert.equal(combineParams({
params: {
foo: 'bar',
faz: 'baz',
fiz: 'biz'
}
}), '?faz=baz&fiz=biz&foo=bar', "{foo: 'bar',faz: 'baz',fiz: 'biz'}");

assert.equal(combineParams({
hasParams: true,
params: {
foo: 'bar'
}
}), '&foo=bar', "{foo:'bar'}");
assert.equal(combineParams({
hasParams: true,
params: {
foo: 'bar',
faz: 'baz'
}
}), '&faz=baz&foo=bar', "{foo:'bar',faz:'baz'}");
assert.equal(combineParams({
hasParams: true,
params: {
foo: 'bar',
faz: 'baz',
fiz: 'biz'
}
}), '&faz=baz&fiz=biz&foo=bar', "{foo: 'bar',faz: 'baz',fiz: 'biz'}");
});

QUnit.test("Dailymotion URLs", function (assert) {
"use strict";
var vi = {
Expand Down

0 comments on commit 969964d

Please sign in to comment.