walnut.js/snippets/test-redirect.js

60 lines
1.7 KiB
JavaScript

'use strict';
var escapeRe = require('escape-string-regexp');
function redirect(host, url) {
var insecureRedirects;
// because I have domains for which I don't want to pay for SSL certs
insecureRedirects = [
{ "from": { "hostname": "coolaj86.org" , "path": "" }
, "to": { "hostname": "coolaj86.com", "path": "" }
}
, { "from": { "hostname": "blog.coolaj86.org" , "path": "" }
, "to": { "hostname": "coolaj86.com", "path": "" }
}
, { "from": { "hostname": "coolaj86.info" , "path": "" }
, "to": { "hostname": "coolaj86.com", "path": "" }
}
, { "from": { "hostname": "blog.coolaj86.info" , "path": "" }
, "to": { "hostname": "coolaj86.com", "path": "" }
}
, { "from": { "hostname": "blog.coolaj86.com" , "path": "" }
, "to": { "hostname": "coolaj86.com", "path": "" }
}
, { "from": { "hostname": "example.org" , "path": "/blog" }
, "to": { "hostname": "blog.example.com", "path": "" }
}
].sort(function (a, b) {
var hlen = b.from.hostname.length - a.from.hostname.length;
var plen;
if (!hlen) {
plen = b.from.path.length - a.from.path.length;
return plen;
}
return hlen;
}).forEach(function (redirect) {
// TODO if '*' === hostname[0], omit '^'
host = host.replace(
new RegExp('^' + escapeRe(redirect.from.hostname))
, redirect.to.hostname
);
url = url.replace(
new RegExp('^' + escapeRe(redirect.from.path))
, redirect.to.path
);
});
return [host, url];
}
[
[ "blog.coolaj86.info", "/articles/awesome.html" ]
, [ "example.org", "/blog" ]
].forEach(function (pair) {
var host = pair[0];
var url = pair[1];
console.log(host, url);
console.log(redirect(host, url));
});