Hey, check out this crazy news article that totally isn't a rickroll

Better url encoding logic

Changed files
+13 -17
assets
js
+5 -7
Web.js
··· 22 22 23 23 app.get('/*', (req, res) => { 24 24 if (req.useragent.isBot) { 25 - let components = req.url.split('/'); 26 - let dest = ''; 27 - components.forEach(c => { 28 - dest = `${c}/${dest}`; 29 - }); 30 - dest = `https://${dest}`; 31 - res.redirect(dest); 25 + let components = req.url.substring(1).split('/').reverse(); 26 + if (components.length && !components[0]) { 27 + components.push(components.shift()); 28 + } 29 + res.redirect(`https://${components.join('/')}`); 32 30 } 33 31 else { 34 32 res.redirect('https://www.youtube.com/watch?v=dQw4w9WgXcQ');
+5 -7
assets/js/url.js
··· 6 6 7 7 function oninput(e) { 8 8 let intext = e.currentTarget.value.replace(protocol, ''); 9 - let components = intext.split('/'); 10 - let out = ''; 11 - components.forEach(c => { 12 - out = `${c}/${out}`; 13 - }); 14 - out = `${url.protocol}//${url.hostname}/${out}`; 15 - output.value = out; 9 + let components = intext.split('/').reverse(); 10 + if (components.length && !components[0]) { 11 + components.push(components.shift()); 12 + } 13 + output.value = `${url.protocol}//${url.hostname}/${components.join('/')}`; 16 14 } 17 15 18 16 input.addEventListener('change', oninput);
+2 -2
package-lock.json
··· 1 1 { 2 2 "name": "rickognito", 3 - "version": "0.0.4", 3 + "version": "0.0.5", 4 4 "lockfileVersion": 2, 5 5 "requires": true, 6 6 "packages": { 7 7 "": { 8 8 "name": "rickognito", 9 - "version": "0.0.4", 9 + "version": "0.0.5", 10 10 "license": "MIT", 11 11 "dependencies": { 12 12 "express": "4.18.2",
+1 -1
package.json
··· 1 1 { 2 2 "name": "rickognito", 3 - "version": "0.0.4", 3 + "version": "0.0.5", 4 4 "description": "Disguise a rickroll", 5 5 "main": "index.js", 6 6 "scripts": {