diff options
author | cel <cel@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519> | 2018-11-29 15:21:15 -1000 |
---|---|---|
committer | cel <cel@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519> | 2018-11-29 15:21:15 -1000 |
commit | 35fd4cfba80c0e434d082778e6105629165b33d7 (patch) | |
tree | 4c9f7c170de8af353cbbfe6f4455c2cf221360fb | |
parent | f7500c061f257feca2bccf3c51616110589cfa0e (diff) | |
download | patchfoo-35fd4cfba80c0e434d082778e6105629165b33d7.tar.gz patchfoo-35fd4cfba80c0e434d082778e6105629165b33d7.zip |
Integrate with ssb-publishguard redirects
-rw-r--r-- | lib/app.js | 29 | ||||
-rw-r--r-- | lib/serve.js | 3 |
2 files changed, 30 insertions, 2 deletions
@@ -224,11 +224,38 @@ App.prototype.getMsgDecryptedOoo = function (key, cb) { }) } +App.prototype.publishMayRedirect = function (content, cb) { + var publishguard = this.sbot.publishguard + if (Array.isArray(content.recps)) { + var recps = content.recps.map(u.linkDest) + if (publishguard && publishguard.privatePublishGetUrl) { + return publishguard.privatePublishGetUrl({ + content: content, + recps: recps, + redirectBase: this.baseUrl + '/' + }, onPublishGetUrl) + } + this.sbot.private.publish(content, recps, cb) + } else { + if (publishguard && publishguard.publishGetUrl) { + return publishguard.publishGetUrl({ + content: content, + redirectBase: this.baseUrl + '/' + }, onPublishGetUrl) + } + this.sbot.publish(content, cb) + } + function onPublishGetUrl(err, url) { + if (err) return cb(err) + cb({redirectUrl: url}) + } +} + App.prototype.publish = function (content, cb) { var self = this function tryPublish(triesLeft) { if (Array.isArray(content.recps)) { - recps = content.recps.map(u.linkDest) + var recps = content.recps.map(u.linkDest) self.sbot.private.publish(content, recps, next) } else { self.sbot.publish(content, next) diff --git a/lib/serve.js b/lib/serve.js index 9d59fa4..db9be20 100644 --- a/lib/serve.js +++ b/lib/serve.js @@ -161,6 +161,7 @@ Serve.prototype.go = function () { function next(err, publishedMsg) { if (err) { + if (err.redirectUrl) return self.redirect(err.redirectUrl) self.res.writeHead(400, {'Content-Type': 'text/plain'}) self.res.end(err.stack) } else if (publishedMsg) { @@ -292,7 +293,7 @@ Serve.prototype.publish = function (content, cb) { }) done(function (err) { if (err) return cb(err) - self.app.publish(content, function (err, msg) { + self.app.publishMayRedirect(content, function (err, msg) { if (err) return cb(err) delete self.data.text delete self.data.recps |