mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat: topic and category S2S get responses
This commit is contained in:
@@ -237,10 +237,3 @@ ActivityPub.send = async (type, id, targets, payload) => {
|
|||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
|
||||||
setTimeout(async () => {
|
|
||||||
await ActivityPub.send('uid', 1, 'https://localhost/category/1', {
|
|
||||||
type: 'Follow',
|
|
||||||
object: 'https://localhost/category/1',
|
|
||||||
});
|
|
||||||
}, 2000);
|
|
||||||
|
|||||||
@@ -232,6 +232,7 @@ Mocks.note = async (post) => {
|
|||||||
published,
|
published,
|
||||||
url: id,
|
url: id,
|
||||||
attributedTo: `${nconf.get('url')}/uid/${post.user.uid}`,
|
attributedTo: `${nconf.get('url')}/uid/${post.user.uid}`,
|
||||||
|
audience: `${nconf.get('url')}/topic/${post.topic.slug}`,
|
||||||
sensitive: false, // todo
|
sensitive: false, // todo
|
||||||
summary: null,
|
summary: null,
|
||||||
name,
|
name,
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ const nconf = require('nconf');
|
|||||||
|
|
||||||
const meta = require('../../meta');
|
const meta = require('../../meta');
|
||||||
const posts = require('../../posts');
|
const posts = require('../../posts');
|
||||||
|
const topics = require('../../topics');
|
||||||
const categories = require('../../categories');
|
const categories = require('../../categories');
|
||||||
const activitypub = require('../../activitypub');
|
const activitypub = require('../../activitypub');
|
||||||
|
|
||||||
@@ -58,6 +59,23 @@ Actors.note = async function (req, res, next) {
|
|||||||
res.status(200).json(payload);
|
res.status(200).json(payload);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Actors.topic = async function (req, res, next) {
|
||||||
|
// When queried, a topic more or less returns the main pid's note representation
|
||||||
|
const { mainPid, slug } = await topics.getTopicFields(req.params.tid, ['mainPid', 'slug']);
|
||||||
|
const post = (await posts.getPostSummaryByPids([mainPid], req.uid, { stripTags: false })).pop();
|
||||||
|
if (!post) {
|
||||||
|
return next('route');
|
||||||
|
}
|
||||||
|
|
||||||
|
const payload = await activitypub.mocks.note(post);
|
||||||
|
payload.id = `${nconf.get('url')}/topic/${req.params.tid}`;
|
||||||
|
payload.type = 'Page';
|
||||||
|
payload.url = `${nconf.get('url')}/topic/${slug}`;
|
||||||
|
payload.audience = `${nconf.get('url')}/category/${post.category.slug}`;
|
||||||
|
|
||||||
|
res.status(200).json(payload);
|
||||||
|
};
|
||||||
|
|
||||||
Actors.category = async function (req, res, next) {
|
Actors.category = async function (req, res, next) {
|
||||||
const exists = await categories.exists(req.params.cid);
|
const exists = await categories.exists(req.params.cid);
|
||||||
if (!exists) {
|
if (!exists) {
|
||||||
|
|||||||
@@ -31,7 +31,9 @@ module.exports = function (app, middleware, controllers) {
|
|||||||
|
|
||||||
app.get('/post/:pid', [...middlewares, middleware.assert.post], controllers.activitypub.actors.note);
|
app.get('/post/:pid', [...middlewares, middleware.assert.post], controllers.activitypub.actors.note);
|
||||||
|
|
||||||
app.get('/category/:cid', [...middlewares, middleware.assert.category], controllers.activitypub.actors.category);
|
app.get('/topic/:tid/:slug?', [...middlewares, middleware.assert.topic], controllers.activitypub.actors.topic);
|
||||||
|
|
||||||
|
app.get('/category/:cid/:slug?', [...middlewares, middleware.assert.category], controllers.activitypub.actors.category);
|
||||||
app.get('/category/:cid/inbox', [...middlewares, middleware.assert.category], controllers.activitypub.getInbox);
|
app.get('/category/:cid/inbox', [...middlewares, middleware.assert.category], controllers.activitypub.getInbox);
|
||||||
app.post('/category/:cid/inbox', [...middlewares, middleware.assert.category, middleware.activitypub.validate], controllers.activitypub.postInbox);
|
app.post('/category/:cid/inbox', [...middlewares, middleware.assert.category, middleware.activitypub.validate], controllers.activitypub.postInbox);
|
||||||
app.get('/category/:cid/outbox', [...middlewares, middleware.assert.category], controllers.activitypub.getCategoryOutbox);
|
app.get('/category/:cid/outbox', [...middlewares, middleware.assert.category], controllers.activitypub.getCategoryOutbox);
|
||||||
|
|||||||
Reference in New Issue
Block a user