git ssb

9+

cel / ssb-viewer



Commit c71fb2a0899fe94c63306d8822b797c6dd42ef68

feat: serve ssb websites under /web

Stephen Whitmore committed on 4/16/2018, 8:59:50 PM
Parent: f41ee2c2c804f38dab9cbe2f218bc8d429e0e5cc

Files changed

index.jschanged
package.jsonchanged
index.jsView
@@ -8,8 +8,9 @@
88 var sort = require('ssb-sort')
99 var toPull = require('stream-to-pull-stream')
1010 var memo = require('asyncmemo')
1111 var lru = require('lrucache')
12 +var webresolve = require('ssb-web-resolver')
1213 var serveEmoji = require('emoji-server')()
1314 var {
1415 MdRenderer,
1516 renderEmoji,
@@ -81,8 +82,9 @@
8182
8283 if (req.url.startsWith('/user-feed/')) return serveUserFeed(req, res, m[4])
8384 else if (req.url.startsWith('/channel/')) return serveChannel(req, res, m[4])
8485 else if (req.url.startsWith('/.well-known/acme-challenge')) return serveAcmeChallenge(req, res)
86 + else if (req.url.startsWith('/web/')) return serveWeb(req, res, m[4])
8587
8688 if (m[2] && m[2].length === 3) {
8789 m[1] = decodeURIComponent(m[1])
8890 m[2] = m[1][0]
@@ -143,8 +145,30 @@
143145 )
144146 })
145147 }
146148
149 + function serveWeb (req, res, url) {
150 + var self = this
151 + var id = decodeURIComponent(url.substr(1))
152 +
153 + var components = url.split('/')
154 + if (components[0] === '') components.shift()
155 + if (components[0] === 'web') components.shift()
156 + components[0] = decodeURIComponent(components[0])
157 +
158 + webresolve(sbot, components, function (err, data) {
159 + if (err) {
160 + return respond(res, 404, 'ERROR: ' + err)
161 + }
162 + return pull(
163 + pull.once(data),
164 + toPull(res, function (err) {
165 + if (err) console.error('[viewer]', err)
166 + })
167 + )
168 + })
169 + }
170 +
147171 function serveUserFeed(req, res, url) {
148172 var feedId = url.substring(url.lastIndexOf('user-feed/')+10, 100)
149173 console.log("serving user feed: " + feedId)
150174
package.jsonView
@@ -18,8 +18,9 @@
1818 "ssb-client": "^4.5.2",
1919 "ssb-marked": "^0.7.3",
2020 "ssb-ref": "^2.9.0",
2121 "ssb-sort": "^1.0.0",
22 + "ssb-web-resolver": "^1.0.4",
2223 "stream-to-pull-stream": "^1.7.2"
2324 },
2425 "devDependencies": {
2526 "tape": "^4.6.2"

Built with git-ssb-web