accept goggles makes. fixes #11.
This commit is contained in:
Родитель
13b276d6ea
Коммит
fd6118bb7d
23
makes.js
23
makes.js
|
@ -1,7 +1,8 @@
|
||||||
var request = require('request');
|
var request = require('request');
|
||||||
var urlParse = require('url').parse;
|
var urlParse = require('url').parse;
|
||||||
|
|
||||||
var MAKES_URL_RE = /^https:\/\/[A-Za-z0-9_\-]+\.makes\.org\//;
|
var HTTPS_MAKES_URL_RE = /^https:\/\/[A-Za-z0-9_\-]+\.makes\.org\//;
|
||||||
|
var GOGGLES_URL_RE = /^http:\/\/[A-Za-z0-9_\-]+\.makes\.org\/goggles\//;
|
||||||
var ENDS_WITH_UNDERSCORE_RE = /_$/;
|
var ENDS_WITH_UNDERSCORE_RE = /_$/;
|
||||||
|
|
||||||
function hostnameAndPath(url) {
|
function hostnameAndPath(url) {
|
||||||
|
@ -10,16 +11,22 @@ function hostnameAndPath(url) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function fromUrl(url) {
|
function fromUrl(url) {
|
||||||
if (!MAKES_URL_RE.test(url)) return null;
|
var contentUrl = null;
|
||||||
|
|
||||||
var contentUrl = url;
|
if (HTTPS_MAKES_URL_RE.test(url)) {
|
||||||
|
contentUrl = url;
|
||||||
|
|
||||||
if (ENDS_WITH_UNDERSCORE_RE.test(url)) {
|
if (ENDS_WITH_UNDERSCORE_RE.test(url)) {
|
||||||
url = url.slice(0, -1);
|
url = url.slice(0, -1);
|
||||||
} else {
|
} else {
|
||||||
contentUrl += '_';
|
contentUrl += '_';
|
||||||
|
}
|
||||||
|
} else if (GOGGLES_URL_RE.test(url)) {
|
||||||
|
contentUrl = url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!contentUrl) return null;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
url: url,
|
url: url,
|
||||||
contentUrl: contentUrl,
|
contentUrl: contentUrl,
|
||||||
|
@ -28,7 +35,7 @@ function fromUrl(url) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function fromHostnameAndPath(str) {
|
function fromHostnameAndPath(str) {
|
||||||
return fromUrl('https://' + str);
|
return fromUrl('http://' + str) || fromUrl('https://' + str);
|
||||||
}
|
}
|
||||||
|
|
||||||
function validateAndNormalizeUrl(url) {
|
function validateAndNormalizeUrl(url) {
|
||||||
|
|
|
@ -18,6 +18,14 @@ describe("makes", function() {
|
||||||
url: 'https://foo.makes.org/blah'
|
url: 'https://foo.makes.org/blah'
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should work for goggles makes", function() {
|
||||||
|
from('foo.makes.org/goggles/blah').should.eql({
|
||||||
|
contentUrl: 'http://foo.makes.org/goggles/blah',
|
||||||
|
hostnameAndPath: 'foo.makes.org/goggles/blah',
|
||||||
|
url: 'http://foo.makes.org/goggles/blah'
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("fromUrl()", function() {
|
describe("fromUrl()", function() {
|
||||||
|
@ -44,6 +52,14 @@ describe("makes", function() {
|
||||||
hostnameAndPath: 'foo.makes.org/'
|
hostnameAndPath: 'foo.makes.org/'
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should accept goggles makes", function() {
|
||||||
|
fromUrl('http://foo.makes.org/goggles/blah').should.eql({
|
||||||
|
contentUrl: 'http://foo.makes.org/goggles/blah',
|
||||||
|
hostnameAndPath: 'foo.makes.org/goggles/blah',
|
||||||
|
url: 'http://foo.makes.org/goggles/blah'
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("validateAndNormalizeUrl()", function() {
|
describe("validateAndNormalizeUrl()", function() {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче