diff options
author | Chocobozzz <me@florianbigard.com> | 2017-12-14 17:38:41 +0100 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2017-12-19 10:53:16 +0100 |
commit | 50d6de9c286abcb34ff4234d56d9cbb803db7665 (patch) | |
tree | f1732b27edcd05c7877a8358b8312f1e38c287ed /server/lib/activitypub/send/send-announce.ts | |
parent | fadf619ad61a016c1c7fc53de5a8f398a4f77519 (diff) | |
download | PeerTube-50d6de9c286abcb34ff4234d56d9cbb803db7665.tar.gz PeerTube-50d6de9c286abcb34ff4234d56d9cbb803db7665.tar.zst PeerTube-50d6de9c286abcb34ff4234d56d9cbb803db7665.zip |
Begin moving video channel to actor
Diffstat (limited to 'server/lib/activitypub/send/send-announce.ts')
-rw-r--r-- | server/lib/activitypub/send/send-announce.ts | 84 |
1 files changed, 26 insertions, 58 deletions
diff --git a/server/lib/activitypub/send/send-announce.ts b/server/lib/activitypub/send/send-announce.ts index e685323e8..578fbc630 100644 --- a/server/lib/activitypub/send/send-announce.ts +++ b/server/lib/activitypub/send/send-announce.ts | |||
@@ -1,88 +1,59 @@ | |||
1 | import { Transaction } from 'sequelize' | 1 | import { Transaction } from 'sequelize' |
2 | import { ActivityAdd } from '../../../../shared/index' | ||
3 | import { ActivityAnnounce, ActivityAudience, ActivityCreate } from '../../../../shared/models/activitypub' | 2 | import { ActivityAnnounce, ActivityAudience, ActivityCreate } from '../../../../shared/models/activitypub' |
4 | import { AccountModel } from '../../../models/account/account' | 3 | import { VideoPrivacy } from '../../../../shared/models/videos' |
4 | import { ActorModel } from '../../../models/activitypub/actor' | ||
5 | import { VideoModel } from '../../../models/video/video' | 5 | import { VideoModel } from '../../../models/video/video' |
6 | import { VideoChannelModel } from '../../../models/video/video-channel' | ||
7 | import { getAnnounceActivityPubUrl } from '../url' | 6 | import { getAnnounceActivityPubUrl } from '../url' |
8 | import { | 7 | import { |
9 | broadcastToFollowers, | 8 | broadcastToFollowers, |
10 | getAccountsInvolvedInVideo, | 9 | getActorsInvolvedInVideo, |
11 | getAccountsInvolvedInVideoChannel, | ||
12 | getAudience, | 10 | getAudience, |
13 | getObjectFollowersAudience, | 11 | getObjectFollowersAudience, |
14 | getOriginVideoAudience, | 12 | getOriginVideoAudience, |
15 | getOriginVideoChannelAudience, | ||
16 | unicastTo | 13 | unicastTo |
17 | } from './misc' | 14 | } from './misc' |
18 | import { addActivityData } from './send-add' | ||
19 | import { createActivityData } from './send-create' | 15 | import { createActivityData } from './send-create' |
20 | 16 | ||
21 | async function buildVideoAnnounceToFollowers (byAccount: AccountModel, video: VideoModel, t: Transaction) { | 17 | async function buildVideoAnnounceToFollowers (byActor: ActorModel, video: VideoModel, t: Transaction) { |
22 | const url = getAnnounceActivityPubUrl(video.url, byAccount) | 18 | const url = getAnnounceActivityPubUrl(video.url, byActor) |
19 | const videoObject = video.toActivityPubObject() | ||
23 | 20 | ||
24 | const videoChannel = video.VideoChannel | 21 | const announcedAudience = await getAudience(byActor, t, video.privacy === VideoPrivacy.PUBLIC) |
25 | const announcedActivity = await addActivityData(url, videoChannel.Account, video, videoChannel.url, video.toActivityPubObject(), t) | 22 | const announcedActivity = await createActivityData(url, video.VideoChannel.Account.Actor, videoObject, t, announcedAudience) |
26 | 23 | ||
27 | const accountsToForwardView = await getAccountsInvolvedInVideo(video, t) | 24 | const accountsToForwardView = await getActorsInvolvedInVideo(video, t) |
28 | const audience = getObjectFollowersAudience(accountsToForwardView) | 25 | const audience = getObjectFollowersAudience(accountsToForwardView) |
29 | return announceActivityData(url, byAccount, announcedActivity, t, audience) | 26 | return announceActivityData(url, byActor, announcedActivity, t, audience) |
30 | } | 27 | } |
31 | 28 | ||
32 | async function sendVideoAnnounceToFollowers (byAccount: AccountModel, video: VideoModel, t: Transaction) { | 29 | async function sendVideoAnnounceToFollowers (byActor: ActorModel, video: VideoModel, t: Transaction) { |
33 | const data = await buildVideoAnnounceToFollowers(byAccount, video, t) | 30 | const data = await buildVideoAnnounceToFollowers(byActor, video, t) |
34 | 31 | ||
35 | return broadcastToFollowers(data, byAccount, [ byAccount ], t) | 32 | return broadcastToFollowers(data, byActor, [ byActor ], t) |
36 | } | 33 | } |
37 | 34 | ||
38 | async function sendVideoAnnounceToOrigin (byAccount: AccountModel, video: VideoModel, t: Transaction) { | 35 | async function sendVideoAnnounceToOrigin (byActor: ActorModel, video: VideoModel, t: Transaction) { |
39 | const url = getAnnounceActivityPubUrl(video.url, byAccount) | 36 | const url = getAnnounceActivityPubUrl(video.url, byActor) |
40 | 37 | ||
41 | const videoChannel = video.VideoChannel | 38 | const videoObject = video.toActivityPubObject() |
42 | const announcedActivity = await addActivityData(url, videoChannel.Account, video, videoChannel.url, video.toActivityPubObject(), t) | 39 | const announcedActivity = await createActivityData(url, video.VideoChannel.Account.Actor, videoObject, t) |
43 | 40 | ||
44 | const accountsInvolvedInVideo = await getAccountsInvolvedInVideo(video, t) | 41 | const actorsInvolvedInVideo = await getActorsInvolvedInVideo(video, t) |
45 | const audience = getOriginVideoAudience(video, accountsInvolvedInVideo) | 42 | const audience = getOriginVideoAudience(video, actorsInvolvedInVideo) |
46 | const data = await createActivityData(url, byAccount, announcedActivity, t, audience) | 43 | const data = await createActivityData(url, byActor, announcedActivity, t, audience) |
47 | 44 | ||
48 | return unicastTo(data, byAccount, videoChannel.Account.sharedInboxUrl, t) | 45 | return unicastTo(data, byActor, video.VideoChannel.Account.Actor.sharedInboxUrl, t) |
49 | } | ||
50 | |||
51 | async function buildVideoChannelAnnounceToFollowers (byAccount: AccountModel, videoChannel: VideoChannelModel, t: Transaction) { | ||
52 | const url = getAnnounceActivityPubUrl(videoChannel.url, byAccount) | ||
53 | const announcedActivity = await createActivityData(url, videoChannel.Account, videoChannel.toActivityPubObject(), t) | ||
54 | |||
55 | const accountsToForwardView = await getAccountsInvolvedInVideoChannel(videoChannel, t) | ||
56 | const audience = getObjectFollowersAudience(accountsToForwardView) | ||
57 | return announceActivityData(url, byAccount, announcedActivity, t, audience) | ||
58 | } | ||
59 | |||
60 | async function sendVideoChannelAnnounceToFollowers (byAccount: AccountModel, videoChannel: VideoChannelModel, t: Transaction) { | ||
61 | const data = await buildVideoChannelAnnounceToFollowers(byAccount, videoChannel, t) | ||
62 | |||
63 | return broadcastToFollowers(data, byAccount, [ byAccount ], t) | ||
64 | } | ||
65 | |||
66 | async function sendVideoChannelAnnounceToOrigin (byAccount: AccountModel, videoChannel: VideoChannelModel, t: Transaction) { | ||
67 | const url = getAnnounceActivityPubUrl(videoChannel.url, byAccount) | ||
68 | const announcedActivity = await createActivityData(url, videoChannel.Account, videoChannel.toActivityPubObject(), t) | ||
69 | |||
70 | const accountsInvolvedInVideo = await getAccountsInvolvedInVideoChannel(videoChannel, t) | ||
71 | const audience = getOriginVideoChannelAudience(videoChannel, accountsInvolvedInVideo) | ||
72 | const data = await createActivityData(url, byAccount, announcedActivity, t, audience) | ||
73 | |||
74 | return unicastTo(data, byAccount, videoChannel.Account.sharedInboxUrl, t) | ||
75 | } | 46 | } |
76 | 47 | ||
77 | async function announceActivityData ( | 48 | async function announceActivityData ( |
78 | url: string, | 49 | url: string, |
79 | byAccount: AccountModel, | 50 | byActor: ActorModel, |
80 | object: ActivityCreate | ActivityAdd, | 51 | object: ActivityCreate, |
81 | t: Transaction, | 52 | t: Transaction, |
82 | audience?: ActivityAudience | 53 | audience?: ActivityAudience |
83 | ): Promise<ActivityAnnounce> { | 54 | ): Promise<ActivityAnnounce> { |
84 | if (!audience) { | 55 | if (!audience) { |
85 | audience = await getAudience(byAccount, t) | 56 | audience = await getAudience(byActor, t) |
86 | } | 57 | } |
87 | 58 | ||
88 | return { | 59 | return { |
@@ -90,7 +61,7 @@ async function announceActivityData ( | |||
90 | to: audience.to, | 61 | to: audience.to, |
91 | cc: audience.cc, | 62 | cc: audience.cc, |
92 | id: url, | 63 | id: url, |
93 | actor: byAccount.url, | 64 | actor: byActor.url, |
94 | object | 65 | object |
95 | } | 66 | } |
96 | } | 67 | } |
@@ -99,10 +70,7 @@ async function announceActivityData ( | |||
99 | 70 | ||
100 | export { | 71 | export { |
101 | sendVideoAnnounceToFollowers, | 72 | sendVideoAnnounceToFollowers, |
102 | sendVideoChannelAnnounceToFollowers, | ||
103 | sendVideoAnnounceToOrigin, | 73 | sendVideoAnnounceToOrigin, |
104 | sendVideoChannelAnnounceToOrigin, | ||
105 | announceActivityData, | 74 | announceActivityData, |
106 | buildVideoAnnounceToFollowers, | 75 | buildVideoAnnounceToFollowers |
107 | buildVideoChannelAnnounceToFollowers | ||
108 | } | 76 | } |