Files
gancio/server/federation/index.js

48 lines
1.3 KiB
JavaScript
Raw Normal View History

2019-07-29 01:27:47 +02:00
const express = require('express')
const router = express.Router()
const config = require('config')
2019-07-30 18:32:26 +02:00
const bodyParser = require('body-parser')
const cors = require('cors')
const Follows = require('./follows')
const Users = require('./users')
/**
* Federation is calling!
* ref: https://www.w3.org/TR/activitypub/#Overview
*/
router.use(cors())
router.use(bodyParser.json({type: 'application/activity+json'}))
// get any message coming from federation
// Federation is calling!
router.post('/u/:name/inbox', async (req, res) => {
2019-07-29 22:40:27 +02:00
const b = req.body
2019-07-30 18:32:26 +02:00
console.error('> INBOX ', b.type, b)
2019-07-29 23:35:47 +02:00
const targetOrigin = new URL(b.actor).origin
2019-07-29 22:40:27 +02:00
const domain = new URL(config.baseurl).host
2019-07-30 18:32:26 +02:00
2019-07-29 22:40:27 +02:00
switch(b.type) {
case 'Follow':
2019-07-30 18:32:26 +02:00
Follows.follow(req, res, b, targetOrigin, domain)
break
case 'Undo':
Follows.unfollow(req, res, b, targetOrigin, domain)
break
case 'Announce':
console.error('This is a boost ?')
break
case 'Note':
console.error('this is a note ! I should not receive this')
break
case 'Create':
console.error('Create what? This is probably a reply', b.object.type)
2019-07-29 22:40:27 +02:00
break
}
})
2019-07-29 01:27:47 +02:00
2019-07-30 18:32:26 +02:00
router.get('/u/:name/outbox', Users.outbox)
router.get('/u/:name/followers', Users.followers)
router.get('/u/:name', Users.get)
2019-07-29 22:40:27 +02:00
2019-07-29 23:35:47 +02:00
module.exports = router