Commit 4d2dd658deab23b90f797d31084d9217cbf66345
Add id query form on home page
cel committed on 8/22/2018, 7:59:03 PMParent: 36c63bc1828456bf3417ff9eb5187cfcb776b3b2
Files changed
index.js | changed |
index.js | ||
---|---|---|
@@ -10,8 +10,10 @@ | ||
10 | 10 … | var memo = require('asyncmemo') |
11 | 11 … | var lru = require('lrucache') |
12 | 12 … | var webresolve = require('ssb-web-resolver') |
13 | 13 … | var serveEmoji = require('emoji-server')() |
14 … | +var refs = require('ssb-ref') | |
15 … | +var h = require('hyperscript') | |
14 | 16 … | var { |
15 | 17 … | MdRenderer, |
16 | 18 … | renderEmoji, |
17 | 19 … | formatMsgs, |
@@ -97,8 +99,10 @@ | ||
97 | 99 … | case '%': return serveId(req, res, m[1], m[3], m[5]) |
98 | 100 … | case '@': return serveFeed(req, res, m[1], m[3], m[5]) |
99 | 101 … | case '&': return serveBlob(req, res, sbot, m[1]) |
100 | 102 … | } |
103 … | + | |
104 … | + if (m[4] === '/') return serveHome(req, res, m[5]) | |
101 | 105 … | return respond(res, 404, 'Not found') |
102 | 106 … | } |
103 | 107 … | |
104 | 108 … | function serveFeed(req, res, feedId, ext) { |
@@ -524,8 +528,44 @@ | ||
524 | 528 … | fs.createReadStream(file).pipe(res) |
525 | 529 … | }) |
526 | 530 … | } |
527 | 531 … | |
532 … | +function asLink(id) { | |
533 … | + if (!id || typeof id !== 'string') return null | |
534 … | + id = id.trim() | |
535 … | + if (refs.isLink(id)) return id | |
536 … | + try { | |
537 … | + id = decodeURIComponent(id) | |
538 … | + } catch(e) { | |
539 … | + return null | |
540 … | + } | |
541 … | + if (refs.isLink(id)) return id | |
542 … | +} | |
543 … | + | |
544 … | +function serveHome(req, res, query, conf) { | |
545 … | + var q = query ? qs.parse(query) : {} | |
546 … | + var id = asLink(q.id) | |
547 … | + if (id) { | |
548 … | + res.writeHead(303, { | |
549 … | + Location: '/' + (refs.isMsgId(id) ? encodeURIComponent(id) : id) | |
550 … | + }) | |
551 … | + return res.end() | |
552 … | + } | |
553 … | + res.writeHead(200, { | |
554 … | + 'Content-Type': 'text/html' | |
555 … | + }) | |
556 … | + pull( | |
557 … | + pull.once(h('form', {method: 'get', action: ''}, | |
558 … | + h('input', {name: 'id', placeholder: 'id', size: 60, value: q.id || ''}), ' ', | |
559 … | + h('input', {type: 'submit', value: 'Go'}) | |
560 … | + ).outerHTML), | |
561 … | + wrapPage('ssb-viewer'), | |
562 … | + toPull(res, function (err) { | |
563 … | + if (err) console.error('[viewer]', err) | |
564 … | + }) | |
565 … | + ) | |
566 … | +} | |
567 … | + | |
528 | 568 … | function serveRobots(req, res, conf) { |
529 | 569 … | var disallow = conf.disallowRobots == null ? true : conf.disallowRobots |
530 | 570 … | res.end('User-agent: *\n' |
531 | 571 … | + (disallow ? 'Disallow: /\n' : '')) |
Built with git-ssb-web