[fedi] better /inbox /followers response
This commit is contained in:
@@ -12,16 +12,23 @@ module.exports = {
|
|||||||
const ret = {
|
const ret = {
|
||||||
'@context': [
|
'@context': [
|
||||||
'https://www.w3.org/ns/activitystreams',
|
'https://www.w3.org/ns/activitystreams',
|
||||||
'https://w3id.org/security/v1'
|
'https://w3id.org/security/v1',
|
||||||
|
{
|
||||||
|
toot: 'http://joinmastodon.org/ns#',
|
||||||
|
schema: 'http://schema.org#',
|
||||||
|
ProperyValue: 'schema:PropertyValue',
|
||||||
|
value: 'schema:value'
|
||||||
|
}
|
||||||
],
|
],
|
||||||
summary: config.description,
|
|
||||||
id: `${config.baseurl}/federation/u/${name}`,
|
id: `${config.baseurl}/federation/u/${name}`,
|
||||||
type: 'Person',
|
type: 'Person',
|
||||||
|
summary: config.description,
|
||||||
name: user.display_name || user.username,
|
name: user.display_name || user.username,
|
||||||
preferredUsername: user.username,
|
preferredUsername: user.username,
|
||||||
inbox: `${config.baseurl}/federation/u/${name}/inbox`,
|
inbox: `${config.baseurl}/federation/u/${name}/inbox`,
|
||||||
outbox: `${config.baseurl}/federation/u/${name}/outbox`,
|
// outbox: `${config.baseurl}/federation/u/${name}/outbox`,
|
||||||
followers: `${config.baseurl}/federation/u/${name}/followers`,
|
// followers: `${config.baseurl}/federation/u/${name}/followers`,
|
||||||
|
discoverable: true,
|
||||||
attachment: [{
|
attachment: [{
|
||||||
type: 'PropertyValue',
|
type: 'PropertyValue',
|
||||||
name: 'Website',
|
name: 'Website',
|
||||||
@@ -46,7 +53,7 @@ module.exports = {
|
|||||||
const page = req.query.page
|
const page = req.query.page
|
||||||
debug('Retrieve %s followers', name)
|
debug('Retrieve %s followers', name)
|
||||||
if (!name) { return res.status(400).send('Bad request.') }
|
if (!name) { return res.status(400).send('Bad request.') }
|
||||||
const user = await User.findOne({ where: { username: name }, include: { model: FedUsers, as: 'followers' } })
|
const user = await User.findOne({ where: { username: name }, include: [{ model: FedUsers, as: 'followers' }] })
|
||||||
if (!user) { return res.status(404).send(`No record found for ${name}`) }
|
if (!user) { return res.status(404).send(`No record found for ${name}`) }
|
||||||
|
|
||||||
res.type('application/activity+json; charset=utf-8')
|
res.type('application/activity+json; charset=utf-8')
|
||||||
@@ -59,7 +66,8 @@ module.exports = {
|
|||||||
type: 'OrderedCollection',
|
type: 'OrderedCollection',
|
||||||
totalItems: user.followers.length,
|
totalItems: user.followers.length,
|
||||||
first: `${config.baseurl}/federation/u/${name}/followers?page=true`,
|
first: `${config.baseurl}/federation/u/${name}/followers?page=true`,
|
||||||
last: `${config.baseurl}/federation/u/${name}/followers?page=true`
|
last: `${config.baseurl}/federation/u/${name}/followers?page=true`,
|
||||||
|
orderedItems: user.followers.map(f => f.ap_id)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return res.json({
|
return res.json({
|
||||||
@@ -68,7 +76,7 @@ module.exports = {
|
|||||||
type: 'OrderedCollectionPage',
|
type: 'OrderedCollectionPage',
|
||||||
totalItems: user.followers.length,
|
totalItems: user.followers.length,
|
||||||
partOf: `${config.baseurl}/federation/u/${name}/followers`,
|
partOf: `${config.baseurl}/federation/u/${name}/followers`,
|
||||||
orderedItems: user.followers
|
orderedItems: user.followers.map(f => f.ap_id)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -89,9 +97,8 @@ module.exports = {
|
|||||||
// https://www.w3.org/TR/activitypub/#outbox
|
// https://www.w3.org/TR/activitypub/#outbox
|
||||||
res.type('application/activity+json; charset=utf-8')
|
res.type('application/activity+json; charset=utf-8')
|
||||||
if (!page) {
|
if (!page) {
|
||||||
debug('Without pagination ')
|
|
||||||
return res.json({
|
return res.json({
|
||||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
'@context': ['https://www.w3.org/ns/activitystreams'],
|
||||||
id: `${config.baseurl}/federation/u/${name}/outbox`,
|
id: `${config.baseurl}/federation/u/${name}/outbox`,
|
||||||
type: 'OrderedCollection',
|
type: 'OrderedCollection',
|
||||||
totalItems: user.events.length,
|
totalItems: user.events.length,
|
||||||
@@ -102,20 +109,22 @@ module.exports = {
|
|||||||
|
|
||||||
debug('With pagination %s', page)
|
debug('With pagination %s', page)
|
||||||
return res.json({
|
return res.json({
|
||||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
'@context': ['https://www.w3.org/ns/activitystreams', { Hashtag: 'as:Hashtag' }],
|
||||||
id: `${config.baseurl}/federation/u/${name}/outbox?page=${page}`,
|
id: `${config.baseurl}/federation/u/${name}/outbox?page=${page}`,
|
||||||
type: 'OrderedCollectionPage',
|
type: 'OrderedCollectionPage',
|
||||||
totalItems: user.events.length,
|
totalItems: user.events.length,
|
||||||
partOf: `${config.baseurl}/federation/u/${name}/outbox`,
|
partOf: `${config.baseurl}/federation/u/${name}/outbox`,
|
||||||
orderedItems: user.events.map(e => ({
|
orderedItems: user.events.map(e => ({
|
||||||
id: `${config.baseurl}/federation/m/${e.id}#create`,
|
...e.toAP(user.username), actor: `${config.baseurl}/federation/u/${user.username}`}))
|
||||||
type: 'Create',
|
// user.events.map(e => ({
|
||||||
to: ['https://www.w3.org/ns/activitystreams#Public'],
|
// id: `${config.baseurl}/federation/m/${e.id}#create`,
|
||||||
cc: [`${config.baseurl}/federation/u/${user.username}/followers`],
|
// type: 'Create',
|
||||||
published: e.createdAt,
|
// to: ['https://www.w3.org/ns/activitystreams#Public'],
|
||||||
actor: `${config.baseurl}/federation/u/${user.username}`,
|
// cc: [`${config.baseurl}/federation/u/${user.username}/followers`],
|
||||||
object: e.toAP(user.username)
|
// published: e.createdAt,
|
||||||
}))
|
// actor: `${config.baseurl}/federation/u/${user.username}`,
|
||||||
|
// object: e.toAP(user.username)
|
||||||
|
// }))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user