lib/serve.jsView |
---|
106 | 106 … | |
107 | 107 … | function gotData(err, data) { |
108 | 108 … | self.data = data |
109 | 109 … | if (err) next(err) |
110 | | - else if (data.action === 'publish') self.publish(next) |
| 110 … | + else if (data.action === 'publish') self.publishJSON(next) |
| 111 … | + else if (data.action === 'vote') self.publishVote(next) |
111 | 112 … | else next() |
112 | 113 … | } |
113 | 114 … | |
114 | 115 … | function next(err) { |
120 | 121 … | } |
121 | 122 … | } |
122 | 123 … | } |
123 | 124 … | |
124 | | -Serve.prototype.publish = function (cb) { |
125 | | - var self = this |
| 125 … | +Serve.prototype.publishJSON = function (cb) { |
126 | 126 … | var content |
127 | 127 … | try { |
128 | | - content = JSON.parse(self.data.content) |
| 128 … | + content = JSON.parse(this.data.content) |
129 | 129 … | } catch(e) { |
130 | 130 … | return cb(e) |
131 | 131 … | } |
| 132 … | + this.publish(content, cb) |
| 133 … | +} |
| 134 … | + |
| 135 … | +Serve.prototype.publishVote = function (cb) { |
| 136 … | + var content = { |
| 137 … | + type: 'vote', |
| 138 … | + vote: { |
| 139 … | + link: this.data.link, |
| 140 … | + value: Number(this.data.value), |
|
| 141 … | + expression: this.data.expression, |
| 142 … | + } |
| 143 … | + } |
| 144 … | + if (this.data.recps) content.recps = this.data.recps.split(',') |
| 145 … | + this.publish(content, cb) |
| 146 … | +} |
| 147 … | + |
| 148 … | +Serve.prototype.publish = function (content, cb) { |
| 149 … | + var self = this |
132 | 150 … | var done = multicb({pluck: 1, spread: true}) |
133 | 151 … | u.toArray(content && content.mentions).forEach(function (mention) { |
134 | 152 … | if (mention.link && mention.link[0] === '&' && !isNaN(mention.size)) |
135 | 153 … | self.app.pushBlob(mention.link, done()) |
326 | 344 … | }) |
327 | 345 … | ) |
328 | 346 … | } |
329 | 347 … | |
330 | | -Serve.prototype.vote = function (ext) { |
331 | | - var self = this |
332 | | - |
333 | | - var content = { |
334 | | - type: 'vote', |
335 | | - vote: { |
336 | | - link: self.data.link, |
337 | | - value: self.data.value, |
338 | | - expression: self.data.expression, |
339 | | - } |
340 | | - } |
341 | | - if (self.data.recps) content.recps = self.data.recps.split(',') |
342 | | - self.app.publish(content, function (err, msg) { |
343 | | - if (err) return pull( |
344 | | - pull.once(u.renderError(err).outerHTML), |
345 | | - self.wrapPage(content.vote.expression), |
346 | | - self.respondSink(500, { |
347 | | - 'Content-Type': ctype(ext) |
348 | | - }) |
349 | | - ) |
350 | | - |
351 | | - pull( |
352 | | - pull.once(msg), |
353 | | - pull.asyncMap(self.app.unboxMsg), |
354 | | - self.app.render.renderFeeds(false), |
355 | | - pull.map(u.toHTML), |
356 | | - self.wrapMessages(), |
357 | | - u.hyperwrap(function (content, cb) { |
358 | | - cb(null, h('div', |
359 | | - 'published:', |
360 | | - content |
361 | | - )) |
362 | | - }), |
363 | | - self.wrapPage('published'), |
364 | | - self.respondSink(302, { |
365 | | - 'Content-Type': ctype(ext), |
366 | | - 'Location': self.app.render.toUrl(msg.key) |
367 | | - }) |
368 | | - ) |
369 | | - }) |
370 | | -} |
371 | | - |
372 | 348 … | Serve.prototype.rawId = function (id) { |
373 | 349 … | var self = this |
374 | 350 … | |
375 | 351 … | self.app.getMsgDecrypted(id, function (err, msg) { |