From 14a57d1ebfbb4348943891ce80761b89f498e442 Mon Sep 17 00:00:00 2001 From: Armin Date: Wed, 27 Feb 2019 15:44:01 +0100 Subject: [PATCH] Refactoring + fixes --- src/activitypub/ActivityPub.js | 34 ++++--------------- src/activitypub/Collections.js | 28 +++++++++++++++ ...{NitroDatasource.js => NitroDataSource.js} | 2 +- src/activitypub/utils/collection.js | 12 +++---- 4 files changed, 42 insertions(+), 34 deletions(-) create mode 100644 src/activitypub/Collections.js rename src/activitypub/{NitroDatasource.js => NitroDataSource.js} (99%) diff --git a/src/activitypub/ActivityPub.js b/src/activitypub/ActivityPub.js index 4f5774d9d..4bdbc9563 100644 --- a/src/activitypub/ActivityPub.js +++ b/src/activitypub/ActivityPub.js @@ -12,12 +12,13 @@ import cluster from 'cluster' import os from 'os' import request from 'request' import as from 'activitystrea.ms' -import NitroDatasource from './NitroDatasource' +import NitroDataSource from './NitroDataSource' import router from './routes' import dotenv from 'dotenv' import express from 'express' import http from 'http' import { resolve } from 'path' +import Collections from './Collections' const debug = require('debug')('ea') const numCPUs = os.cpus().length @@ -29,7 +30,8 @@ export default class ActivityPub { constructor (domain, port) { if (domain === 'localhost') { this.domain = `${domain}:${port}` } else { this.domain = domain } this.port = port - this.dataSource = new NitroDatasource(this.domain) + this.dataSource = new NitroDataSource(this.domain) + this.collections = new Collections(this.dataSource) } static init (server) { if (!activityPub) { @@ -43,6 +45,7 @@ export default class ActivityPub { server.express.use(router) debug('ActivityPub middleware added to the express service') } else { + // standalone clustered ActivityPub service if (cluster.isMaster) { debug(`master with pid = ${process.pid} is running`) for (let i = 0; i < numCPUs; i++) { @@ -52,7 +55,6 @@ export default class ActivityPub { debug(`worker ${worker.process.pid} died with code ${code} and signal ${signal}`) }) } else { - // Standalone const app = express() app.set('ap', activityPub) app.use(router) @@ -66,30 +68,6 @@ export default class ActivityPub { } } - getFollowersCollection (actorId) { - return this.dataSource.getFollowersCollection(actorId) - } - - getFollowersCollectionPage (actorId) { - return this.dataSource.getFollowersCollectionPage(actorId) - } - - getFollowingCollection (actorId) { - return this.dataSource.getFollowingCollection(actorId) - } - - getFollowingCollectionPage (actorId) { - return this.dataSource.getFollowingCollectionPage(actorId) - } - - getOutboxCollection (actorId) { - return this.dataSource.getOutboxCollection(actorId) - } - - getOutboxCollectionPage (actorId) { - return this.dataSource.getOutboxCollectionPage(actorId) - } - handleFollowActivity (activity) { debug(`inside FOLLOW ${activity.actor}`) let toActorName = extractNameFromId(activity.object) @@ -191,10 +169,12 @@ export default class ActivityPub { } handleLikeActivity (activity) { + // TODO differ if activity is an Article/Note/etc. return this.dataSource.createShouted(activity) } handleDislikeActivity (activity) { + // TODO differ if activity is an Article/Note/etc. return this.dataSource.deleteShouted(activity) } diff --git a/src/activitypub/Collections.js b/src/activitypub/Collections.js new file mode 100644 index 000000000..227e1717b --- /dev/null +++ b/src/activitypub/Collections.js @@ -0,0 +1,28 @@ +export default class Collections { + constructor (dataSource) { + this.dataSource = dataSource + } + getFollowersCollection (actorId) { + return this.dataSource.getFollowersCollection(actorId) + } + + getFollowersCollectionPage (actorId) { + return this.dataSource.getFollowersCollectionPage(actorId) + } + + getFollowingCollection (actorId) { + return this.dataSource.getFollowingCollection(actorId) + } + + getFollowingCollectionPage (actorId) { + return this.dataSource.getFollowingCollectionPage(actorId) + } + + getOutboxCollection (actorId) { + return this.dataSource.getOutboxCollection(actorId) + } + + getOutboxCollectionPage (actorId) { + return this.dataSource.getOutboxCollectionPage(actorId) + } +} diff --git a/src/activitypub/NitroDatasource.js b/src/activitypub/NitroDataSource.js similarity index 99% rename from src/activitypub/NitroDatasource.js rename to src/activitypub/NitroDataSource.js index 054b77854..11be287d7 100644 --- a/src/activitypub/NitroDatasource.js +++ b/src/activitypub/NitroDataSource.js @@ -28,7 +28,7 @@ const debug = require('debug')('ea:nitro-datasource') dotenv.config({ path: resolve('src', 'activitypub', '.env') }) -export default class NitroDatasource { +export default class NitroDataSource { constructor (domain) { this.domain = domain const defaultOptions = { diff --git a/src/activitypub/utils/collection.js b/src/activitypub/utils/collection.js index 379febe43..4c46adbde 100644 --- a/src/activitypub/utils/collection.js +++ b/src/activitypub/utils/collection.js @@ -30,27 +30,27 @@ export function sendCollection (collectionName, req, res) { switch (collectionName) { case 'followers': - attachThenCatch(activityPub.getFollowersCollection(id), res) + attachThenCatch(activityPub.collections.getFollowersCollection(id), res) break case 'followersPage': - attachThenCatch(activityPub.getFollowersCollectionPage(id), res) + attachThenCatch(activityPub.collections.getFollowersCollectionPage(id), res) break case 'following': - attachThenCatch(activityPub.getFollowingCollection(id), res) + attachThenCatch(activityPub.collections.getFollowingCollection(id), res) break case 'followingPage': - attachThenCatch(activityPub.getFollowingCollectionPage(id), res) + attachThenCatch(activityPub.collections.getFollowingCollectionPage(id), res) break case 'outbox': - attachThenCatch(activityPub.getOutboxCollection(id), res) + attachThenCatch(activityPub.collections.getOutboxCollection(id), res) break case 'outboxPage': - attachThenCatch(activityPub.getOutboxCollectionPage(id), res) + attachThenCatch(activityPub.collections.getOutboxCollectionPage(id), res) break default: