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