diff options
author | Chocobozzz <me@florianbigard.com> | 2018-01-11 17:37:49 +0100 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2018-01-11 17:45:57 +0100 |
commit | 4bbc373f134ecbf53f0198277663a25b26a19cc8 (patch) | |
tree | 77bb92e0f7003fcdf0746695d314bfaf19625daa /server/lib | |
parent | cfe1efd200f80239e19f94335364ac9ef3813c19 (diff) | |
download | PeerTube-4bbc373f134ecbf53f0198277663a25b26a19cc8.tar.gz PeerTube-4bbc373f134ecbf53f0198277663a25b26a19cc8.tar.zst PeerTube-4bbc373f134ecbf53f0198277663a25b26a19cc8.zip |
Add reject processing for activitypub
Diffstat (limited to 'server/lib')
-rw-r--r-- | server/lib/activitypub/process/process-reject.ts | 32 | ||||
-rw-r--r-- | server/lib/activitypub/process/process.ts | 2 |
2 files changed, 34 insertions, 0 deletions
diff --git a/server/lib/activitypub/process/process-reject.ts b/server/lib/activitypub/process/process-reject.ts new file mode 100644 index 000000000..b2de28d79 --- /dev/null +++ b/server/lib/activitypub/process/process-reject.ts | |||
@@ -0,0 +1,32 @@ | |||
1 | import { ActivityReject } from '../../../../shared/models/activitypub/activity' | ||
2 | import { sequelizeTypescript } from '../../../initializers' | ||
3 | import { ActorModel } from '../../../models/activitypub/actor' | ||
4 | import { ActorFollowModel } from '../../../models/activitypub/actor-follow' | ||
5 | |||
6 | async function processRejectActivity (activity: ActivityReject, inboxActor?: ActorModel) { | ||
7 | if (inboxActor === undefined) throw new Error('Need to reject on explicit inbox.') | ||
8 | |||
9 | const targetActor = await ActorModel.loadByUrl(activity.actor) | ||
10 | |||
11 | return processReject(inboxActor, targetActor) | ||
12 | } | ||
13 | |||
14 | // --------------------------------------------------------------------------- | ||
15 | |||
16 | export { | ||
17 | processRejectActivity | ||
18 | } | ||
19 | |||
20 | // --------------------------------------------------------------------------- | ||
21 | |||
22 | async function processReject (actor: ActorModel, targetActor: ActorModel) { | ||
23 | return sequelizeTypescript.transaction(async t => { | ||
24 | const actorFollow = await ActorFollowModel.loadByActorAndTarget(actor.id, targetActor.id, t) | ||
25 | |||
26 | if (!actorFollow) throw new Error(`'Unknown actor follow ${actor.id} -> ${targetActor.id}.`) | ||
27 | |||
28 | await actorFollow.destroy({ transaction: t }) | ||
29 | |||
30 | return undefined | ||
31 | }) | ||
32 | } | ||
diff --git a/server/lib/activitypub/process/process.ts b/server/lib/activitypub/process/process.ts index 62d310f21..810c28e26 100644 --- a/server/lib/activitypub/process/process.ts +++ b/server/lib/activitypub/process/process.ts | |||
@@ -7,6 +7,7 @@ import { processCreateActivity } from './process-create' | |||
7 | import { processDeleteActivity } from './process-delete' | 7 | import { processDeleteActivity } from './process-delete' |
8 | import { processFollowActivity } from './process-follow' | 8 | import { processFollowActivity } from './process-follow' |
9 | import { processLikeActivity } from './process-like' | 9 | import { processLikeActivity } from './process-like' |
10 | import { processRejectActivity } from './process-reject' | ||
10 | import { processUndoActivity } from './process-undo' | 11 | import { processUndoActivity } from './process-undo' |
11 | import { processUpdateActivity } from './process-update' | 12 | import { processUpdateActivity } from './process-update' |
12 | 13 | ||
@@ -16,6 +17,7 @@ const processActivity: { [ P in ActivityType ]: (activity: Activity, inboxActor? | |||
16 | Delete: processDeleteActivity, | 17 | Delete: processDeleteActivity, |
17 | Follow: processFollowActivity, | 18 | Follow: processFollowActivity, |
18 | Accept: processAcceptActivity, | 19 | Accept: processAcceptActivity, |
20 | Reject: processRejectActivity, | ||
19 | Announce: processAnnounceActivity, | 21 | Announce: processAnnounceActivity, |
20 | Undo: processUndoActivity, | 22 | Undo: processUndoActivity, |
21 | Like: processLikeActivity | 23 | Like: processLikeActivity |