diff options
author | Chocobozzz <me@florianbigard.com> | 2018-09-14 16:51:35 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2018-09-14 16:51:35 +0200 |
commit | a2377d15ee09301cf4cc5434ad865a21918da15f (patch) | |
tree | 4325153370bb19511ff162114056a5c7fd89744d /server/lib/activitypub/send/utils.ts | |
parent | d61b817890d5d5bba61d447518321870498028d8 (diff) | |
download | PeerTube-a2377d15ee09301cf4cc5434ad865a21918da15f.tar.gz PeerTube-a2377d15ee09301cf4cc5434ad865a21918da15f.tar.zst PeerTube-a2377d15ee09301cf4cc5434ad865a21918da15f.zip |
Refractor activities sending
Diffstat (limited to 'server/lib/activitypub/send/utils.ts')
-rw-r--r-- | server/lib/activitypub/send/utils.ts | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/server/lib/activitypub/send/utils.ts b/server/lib/activitypub/send/utils.ts index c20c15633..69706e620 100644 --- a/server/lib/activitypub/send/utils.ts +++ b/server/lib/activitypub/send/utils.ts | |||
@@ -1,13 +1,36 @@ | |||
1 | import { Transaction } from 'sequelize' | 1 | import { Transaction } from 'sequelize' |
2 | import { Activity } from '../../../../shared/models/activitypub' | 2 | import { Activity, ActivityAudience } from '../../../../shared/models/activitypub' |
3 | import { logger } from '../../../helpers/logger' | 3 | import { logger } from '../../../helpers/logger' |
4 | import { ActorModel } from '../../../models/activitypub/actor' | 4 | import { ActorModel } from '../../../models/activitypub/actor' |
5 | import { ActorFollowModel } from '../../../models/activitypub/actor-follow' | 5 | import { ActorFollowModel } from '../../../models/activitypub/actor-follow' |
6 | import { JobQueue } from '../../job-queue' | 6 | import { JobQueue } from '../../job-queue' |
7 | import { VideoModel } from '../../../models/video/video' | 7 | import { VideoModel } from '../../../models/video/video' |
8 | import { getActorsInvolvedInVideo } from '../audience' | 8 | import { getActorsInvolvedInVideo, getAudienceFromFollowersOf, getRemoteVideoAudience } from '../audience' |
9 | import { getServerActor } from '../../../helpers/utils' | 9 | import { getServerActor } from '../../../helpers/utils' |
10 | 10 | ||
11 | async function sendVideoRelatedActivity (activityBuilder: (audience: ActivityAudience) => Activity, options: { | ||
12 | byActor: ActorModel, | ||
13 | video: VideoModel, | ||
14 | transaction?: Transaction | ||
15 | }) { | ||
16 | const actorsInvolvedInVideo = await getActorsInvolvedInVideo(options.video, options.transaction) | ||
17 | |||
18 | // Send to origin | ||
19 | if (options.video.isOwned() === false) { | ||
20 | const audience = getRemoteVideoAudience(options.video, actorsInvolvedInVideo) | ||
21 | const activity = activityBuilder(audience) | ||
22 | |||
23 | return unicastTo(activity, options.byActor, options.video.VideoChannel.Account.Actor.sharedInboxUrl) | ||
24 | } | ||
25 | |||
26 | // Send to followers | ||
27 | const audience = getAudienceFromFollowersOf(actorsInvolvedInVideo) | ||
28 | const activity = activityBuilder(audience) | ||
29 | |||
30 | const actorsException = [ options.byActor ] | ||
31 | return broadcastToFollowers(activity, options.byActor, actorsInvolvedInVideo, options.transaction, actorsException) | ||
32 | } | ||
33 | |||
11 | async function forwardVideoRelatedActivity ( | 34 | async function forwardVideoRelatedActivity ( |
12 | activity: Activity, | 35 | activity: Activity, |
13 | t: Transaction, | 36 | t: Transaction, |
@@ -110,7 +133,8 @@ export { | |||
110 | unicastTo, | 133 | unicastTo, |
111 | forwardActivity, | 134 | forwardActivity, |
112 | broadcastToActors, | 135 | broadcastToActors, |
113 | forwardVideoRelatedActivity | 136 | forwardVideoRelatedActivity, |
137 | sendVideoRelatedActivity | ||
114 | } | 138 | } |
115 | 139 | ||
116 | // --------------------------------------------------------------------------- | 140 | // --------------------------------------------------------------------------- |