From 187cf5d8c031e8ecdfeb9cecd02b4cb1c42f5105 Mon Sep 17 00:00:00 2001 From: cel Date: Sun, 16 Apr 2017 10:46:48 -0700 Subject: [PATCH] Serve feeds under root directory --- index.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/index.js b/index.js index 4fe2bb1..0ef4d45 100644 --- a/index.js +++ b/index.js @@ -18,7 +18,7 @@ var serveEmoji = require('emoji-server')() var emojiDir = path.join(require.resolve('emoji-named-characters'), '../pngs') var appHash = hash([fs.readFileSync(__filename)]) -var urlIdRegex = /^(?:\/(([%&]|%25)(?:[A-Za-z0-9\/+]|%2[Ff]|%2[Bb]){43}(?:=|%3[Dd])\.sha256)(?:\.([^?]*))?|(\/.*?))(?:\?(.*))?$/ +var urlIdRegex = /^(?:\/(([%&@]|%25|%26|%40)(?:[A-Za-z0-9\/+]|%2[Ff]|%2[Bb]){43}(?:=|%3[Dd])\.(?:sha256|ed25519))(?:\.([^?]*))?|(\/.*?))(?:\?(.*))?$/ function MdRenderer(opts) { marked.Renderer.call(this, {}) @@ -86,20 +86,19 @@ exports.init = function (sbot, config) { var m = urlIdRegex.exec(req.url) - if (req.url.startsWith('/user/')) return serveFeed(req, res, m[4]) - else if (req.url.startsWith('/user-feed/')) return serveUserFeed(req, res, m[4]) + if (req.url.startsWith('/user-feed/')) return serveUserFeed(req, res, m[4]) else if (req.url.startsWith('/channel/')) return serveChannel(req, res, m[4]) switch (m[2]) { case '%25': m[2] = '%'; m[1] = decodeURIComponent(m[1]) case '%': return serveId(req, res, m[1], m[3], m[5]) + case '@': return serveFeed(req, res, m[1], m[3], m[5]) case '&': return serveBlob(req, res, sbot, m[1]) default: return servePath(req, res, m[4]) } } - function serveFeed(req, res, url) { - var feedId = url.substring(url.lastIndexOf('user/')+5, 100) + function serveFeed(req, res, feedId) { console.log("serving feed: " + feedId) var opts = defaultOpts @@ -529,7 +528,7 @@ function renderMsg(opts, msg) { + ' src="' + opts.img_base + escape(msg.author.image) + '"' + ' height="32" width="32">' + '' + msg.author.name + '' + msgTimestamp(msg, name) + render(opts, c) @@ -560,7 +559,7 @@ function render(opts, c) else if (c.type == 'vote') return ' voted this' else if (c.type == 'contact' && c.following) - return ' followed ' + c.contactAbout.name + "" + return ' followed ' + c.contactAbout.name + "" else if (typeof c == 'string') return ' wrote something private ' else if (c.type == 'about')