social-butterfly
Version:
Incorporate federated social network protocols easily. Used with Hello, world federated blog.
47 lines (40 loc) • 1.49 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = setupPush;
var _feeds = require("./util/feeds");
var _pubsubhubbub = _interopRequireDefault(require("pubsubhubbub"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function setupPush(options) {
const webSubSubscriber = _pubsubhubbub.default.createServer({
callbackUrl: '/fakeCallbackUrl',
// This is overridden when we call subscribe/unsubscribe. We need the host.
secret: options.constants.pushSecret
}); // TODO(mime): verify this is working correctly and remove console.log.
webSubSubscriber.on('feed', async ({
topic,
hub,
callback,
feed,
headers
}) => {
console.log('WebSub feed: ', topic, hub, callback, feed, headers);
const searchParams = new URL(callback).searchParams;
const remoteUser = await options.getRemoteUser(searchParams.get('localUsername'), searchParams.get('remoteProfileUrl'));
await (0, _feeds.parseFeedAndInsertIntoDb)(options, remoteUser, feed);
});
webSubSubscriber.on('error', err => {
console.log('WebSub error', err);
});
webSubSubscriber.on('subscribe', data => {
console.log('WebSub subscribed: ', data);
});
webSubSubscriber.on('unsubscribe', data => {
console.log('WebSub unsubscribed: ', data);
});
webSubSubscriber.on('denied', data => {
console.log('WebSub denied: ', data);
});
return webSubSubscriber;
}