Commit 27f58a3795183b40043200e73de834d45fee2213
serve channel feeds
Anders Rune Jensen committed on 4/15/2017, 10:35:44 AMParent: d02df33849f9c3af8ae077841a35a453f402dc84
Files changed
index.js | changed |
index.js | |||
---|---|---|---|
@@ -86,8 +86,9 @@ | |||
86 | 86 … | ||
87 | 87 … | var m = urlIdRegex.exec(req.url) | |
88 | 88 … | ||
89 | 89 … | if (req.url.startsWith('/user')) return serveFeed(req, res, m[4]) | |
90 … | + else if (req.url.startsWith('/channel')) return serveChannel(req, res, m[4]) | ||
90 | 91 … | ||
91 | 92 … | switch (m[2]) { | |
92 | 93 … | case '%25': m[2] = '%'; m[1] = decodeURIComponent(m[1]) | |
93 | 94 … | case '%': return serveId(req, res, m[1], m[3], m[5]) | |
@@ -115,9 +116,9 @@ | |||
115 | 116 … | renderer: new MdRenderer(opts) | |
116 | 117 … | } | |
117 | 118 … | ||
118 | 119 … | pull( | |
119 | - sbot.createUserStream({ id: feedId, reverse: true }), | ||
120 … | + sbot.createUserStream({ id: feedId, reverse: true, limit: 100 }), | ||
120 | 121 … | pull.collect(function (err, logs) { | |
121 | 122 … | if (err) return respond(res, 500, err.stack || err) | |
122 | 123 … | res.writeHead(200, { | |
123 | 124 … | 'Content-Type': ctype("html") | |
@@ -134,8 +135,52 @@ | |||
134 | 135 … | }) | |
135 | 136 … | ) | |
136 | 137 … | } | |
137 | 138 … | ||
139 … | + function serveChannel(req, res, url) { | ||
140 … | + var channelId = url.substring(url.lastIndexOf('channel/')+8, 100) | ||
141 … | + console.log("serving channel: " + channelId) | ||
142 … | + | ||
143 … | + var opts = defaultOpts | ||
144 … | + | ||
145 … | + opts.marked = { | ||
146 … | + gfm: true, | ||
147 … | + mentions: true, | ||
148 … | + tables: true, | ||
149 … | + breaks: true, | ||
150 … | + pedantic: false, | ||
151 … | + sanitize: true, | ||
152 … | + smartLists: true, | ||
153 … | + smartypants: false, | ||
154 … | + emoji: renderEmoji, | ||
155 … | + renderer: new MdRenderer(opts) | ||
156 … | + } | ||
157 … | + | ||
158 … | + pull( | ||
159 … | + sbot.createLogStream({ reverse: true, limit: 10000 }), | ||
160 … | + pull.filter((msg) => { | ||
161 … | + return !msg.value || msg.value.content.channel == channelId | ||
162 … | + }), | ||
163 … | + pull.filter((msg) => { | ||
164 … | + return !msg.value.content.subscribed | ||
165 … | + }), | ||
166 … | + pull.collect(function (err, logs) { | ||
167 … | + if (err) return respond(res, 500, err.stack || err) | ||
168 … | + res.writeHead(200, { | ||
169 … | + 'Content-Type': ctype("html") | ||
170 … | + }) | ||
171 … | + pull( | ||
172 … | + pull.values(logs), | ||
173 … | + paramap(addAuthorAbout, 8), | ||
174 … | + pull(renderThread(opts), wrapPage(channelId)), | ||
175 … | + toPull(res, function (err) { | ||
176 … | + if (err) console.error('[viewer]', err) | ||
177 … | + }) | ||
178 … | + ) | ||
179 … | + }) | ||
180 … | + ) | ||
181 … | + } | ||
182 … | + | ||
138 | 183 … | function addFollowAbout(msg, cb) { | |
139 | 184 … | if (msg.value.content.contact) | |
140 | 185 … | getAbout(msg.value.content.contact, function (err, about) { | |
141 | 186 … | if (err) return cb(err) |
Built with git-ssb-web