mirror of
https://framagit.org/les/gancio.git
synced 2025-02-01 00:52:01 +01:00
.
This commit is contained in:
parent
7d4b2287e3
commit
cbaeffbc67
3 changed files with 42 additions and 16 deletions
|
@ -1,3 +1,5 @@
|
||||||
|
const config = require('config')
|
||||||
|
|
||||||
module.exports = (sequelize, DataTypes) => {
|
module.exports = (sequelize, DataTypes) => {
|
||||||
const event = sequelize.define('event', {
|
const event = sequelize.define('event', {
|
||||||
id: {
|
id: {
|
||||||
|
@ -35,5 +37,21 @@ module.exports = (sequelize, DataTypes) => {
|
||||||
event.hasMany(models.comment)
|
event.hasMany(models.comment)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event.prototype.toAP = function (username) {
|
||||||
|
return {
|
||||||
|
id: `${config.baseurl}/federation/m/c_${this.id}`,
|
||||||
|
type: 'Create',
|
||||||
|
actor: `${config.baseurl}/federation/u/${username}`,
|
||||||
|
object: {
|
||||||
|
id: `${config.baseurl}/federation/m/${this.id}`,
|
||||||
|
type: 'Note',
|
||||||
|
published: this.createdAt,
|
||||||
|
attributedTo: `${config.baseurl}/federation/u/${username}`,
|
||||||
|
to: 'https://www.w3.org/ns/activitystreams#Public',
|
||||||
|
content: this.title
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return event
|
return event
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,13 @@ const crypto = require('crypto')
|
||||||
const config = require('config')
|
const config = require('config')
|
||||||
|
|
||||||
const Helpers = {
|
const Helpers = {
|
||||||
|
async sendToFollowers (message, user) {
|
||||||
|
const followers = user.followers
|
||||||
|
console.error('send to ', followers)
|
||||||
|
for(let follower of followers) {
|
||||||
|
console.error('send message to ', follower)
|
||||||
|
}
|
||||||
|
},
|
||||||
async signAndSend(message, user, domain, req, res, targetOrigin) {
|
async signAndSend(message, user, domain, req, res, targetOrigin) {
|
||||||
// get the URI of the actor object and append 'inbox' to it
|
// get the URI of the actor object and append 'inbox' to it
|
||||||
let inbox = message.object.actor+'/inbox'
|
let inbox = message.object.actor+'/inbox'
|
||||||
|
@ -34,7 +41,7 @@ const Helpers = {
|
||||||
console.log('Error:', error, response.body)
|
console.log('Error:', error, response.body)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
console.log('Response:', response.body)
|
console.log('Response:', response.body, response.statusCode, response.status, response.statusMessage)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return res.status(200)
|
return res.status(200)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
const { user: User } = require('../api/models')
|
const { user: User, event: Event } = require('../api/models')
|
||||||
const config = require('config')
|
const config = require('config')
|
||||||
const get = require('lodash/get')
|
const get = require('lodash/get')
|
||||||
|
|
||||||
|
@ -48,21 +48,31 @@ module.exports = {
|
||||||
}
|
}
|
||||||
res.json(ret)
|
res.json(ret)
|
||||||
},
|
},
|
||||||
outbox (req, res) {
|
async outbox (req, res) {
|
||||||
const name = req.params.name
|
const name = req.params.name
|
||||||
const page = req.query.page
|
const page = req.query.page
|
||||||
|
|
||||||
if (!name) return res.status(400).send('Bad request.')
|
if (!name) return res.status(400).send('Bad request.')
|
||||||
|
const user = await User.findOne({
|
||||||
|
include: [ Event ],
|
||||||
|
where: { username: name }
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
if (!user) return res.status(404).send(`No record found for ${name}`)
|
||||||
|
|
||||||
console.error('Inside outbox, should return all events from this user')
|
console.error('Inside outbox, should return all events from this user')
|
||||||
|
// https://www.w3.org/TR/activitypub/#outbox
|
||||||
if (!page) {
|
if (!page) {
|
||||||
const ret = {
|
const ret = {
|
||||||
'@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: 1,
|
summary: `${user.username} outbox`,
|
||||||
first: `${config.baseurl}/federation/u/${name}/outbox?page=true`,
|
totalItems: user.events.length,
|
||||||
last: `${config.baseurl}/federation/u/${name}/outbox?page=true`
|
orderedItems: user.events.map(e => e.toAP(user.username))
|
||||||
|
// first: `${config.baseurl}/federation/u/${name}/outbox?page=true`,
|
||||||
|
// last: `${config.baseurl}/federation/u/${name}/outbox?page=true`
|
||||||
}
|
}
|
||||||
return res.json(ret)
|
return res.json(ret)
|
||||||
}
|
}
|
||||||
|
@ -71,16 +81,7 @@ module.exports = {
|
||||||
id: `${config.baseurl}/federation/u/${name}/outbox?page=true`,
|
id: `${config.baseurl}/federation/u/${name}/outbox?page=true`,
|
||||||
type: 'OrderedCollectionPage',
|
type: 'OrderedCollectionPage',
|
||||||
partOf: `${config.baseurl}/federation/u/${name}/outbox`,
|
partOf: `${config.baseurl}/federation/u/${name}/outbox`,
|
||||||
orderedItems: [{
|
orderedItems: user.events.map(e => e.toAP(user.username))
|
||||||
id: `${config.baseurl}/federation/m/12341234`,
|
|
||||||
type: 'Note',
|
|
||||||
url: `${config.baseurl}/federation/m/12341234`,
|
|
||||||
published: new Date(),
|
|
||||||
attributedTo: `${config.baseurl}/federation/u/${name}`,
|
|
||||||
sensitive: false,
|
|
||||||
to: ['https://www.w3.org/ns/activitystreams#Public'],
|
|
||||||
content: 'prova'
|
|
||||||
}]
|
|
||||||
}
|
}
|
||||||
res.json(ret)
|
res.json(ret)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue