support Event type federation

This commit is contained in:
lesion 2023-11-09 16:56:18 +01:00
parent 6189dd9e01
commit deb3da6dbc
No known key found for this signature in database
GPG key ID: 352918250B012177

100
server/federation/events.js Normal file
View file

@ -0,0 +1,100 @@
const log = require('../log')
const helpers = require('../helpers')
const linkifyHtml = require('linkify-html')
const dayjs = require('dayjs')
const eventController = require('../api/controller/event')
const { Event } = require('../api/models/models')
const tagController = require('../api/controller/tag')
module.exports = {
// create an Event from AP
async create (req, res) {
const APEvent = req.body?.object
// check if we are following this user
console.error(req.body)
//
console.error(APEvent)
// check if this event is new
// const exists = await Event.findAll({ where: { }})
const place = await eventController._findOrCreatePlace({
place_name: APEvent.location?.name,
place_address: APEvent.location?.address,
})
let media = []
if (APEvent.attachment.length > 0) {
const image_url = APEvent.attachment[0]?.url
req.file = await helpers.getImageFromURL(image_url)
// let focalpoint = body.image_focalpoint ? body.image_focalpoint.split(',') : ['0', '0']
// focalpoint = [parseFloat(parseFloat(focalpoint[0]).toFixed(2)), parseFloat(parseFloat(focalpoint[1]).toFixed(2))]
media = [{
url: req.file.filename,
height: req.file.height,
width: req.file.width,
name: APEvent.attachment[0]?.name || APEvent.name.trim() || '',
size: req.file.size || 0,
focalpoint: APEvent.attachment[0]?.focalPoint
}]
}
// create it
console.error(Event)
const event = await Event.create({
title: APEvent.name.trim(),
start_datetime: dayjs(APEvent.startTime).unix(),
description: helpers.sanitizeHTML(linkifyHtml(APEvent.content)),
media,
is_visible: true,
apUserApId: req.body.actor,
})
await event.setPlace(place)
// create/assign tags
let tags = []
if (APEvent.tag) {
tags = await tagController._findOrCreate(APEvent.tag.map(t => t?.name.substr(1)))
await event.setTags(tags)
}
return event
},
// update an event from AP
async update (req, res) {
const APEvent = req.body?.object
// check if we are following this user
console.error(req.body)
//
console.error(APEvent)
},
// remove an event from AP
async remove (req, res) {
const APEvent = req.body?.object
// check if we are following this user
console.error(req.body)
//
console.error(APEvent)
}
}