diff options
author | Chocobozzz <florian.bigard@gmail.com> | 2017-11-20 09:43:39 +0100 |
---|---|---|
committer | Chocobozzz <florian.bigard@gmail.com> | 2017-11-27 19:40:52 +0100 |
commit | 54141398354e6e7b94aa3065a705a1251390111c (patch) | |
tree | 8d30d1b9ea8acbe04f6d404125b04fc0c9897b70 /server/lib/activitypub/send/send-add.ts | |
parent | eb8b27c93e61a896a08923dc1ca3c87ba8cf4948 (diff) | |
download | PeerTube-54141398354e6e7b94aa3065a705a1251390111c.tar.gz PeerTube-54141398354e6e7b94aa3065a705a1251390111c.tar.zst PeerTube-54141398354e6e7b94aa3065a705a1251390111c.zip |
Refractor activity pub lib/helpers
Diffstat (limited to 'server/lib/activitypub/send/send-add.ts')
-rw-r--r-- | server/lib/activitypub/send/send-add.ts | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/server/lib/activitypub/send/send-add.ts b/server/lib/activitypub/send/send-add.ts new file mode 100644 index 000000000..3012b7533 --- /dev/null +++ b/server/lib/activitypub/send/send-add.ts | |||
@@ -0,0 +1,38 @@ | |||
1 | import { Transaction } from 'sequelize' | ||
2 | import { ActivityAdd } from '../../../../shared/models/activitypub/activity' | ||
3 | import { VideoPrivacy } from '../../../../shared/models/videos/video-privacy.enum' | ||
4 | import { AccountInstance, VideoInstance } from '../../../models' | ||
5 | import { broadcastToFollowers, getAudience } from './misc' | ||
6 | |||
7 | async function sendAddVideo (video: VideoInstance, t: Transaction) { | ||
8 | const byAccount = video.VideoChannel.Account | ||
9 | |||
10 | const videoObject = video.toActivityPubObject() | ||
11 | const data = await addActivityData(video.url, byAccount, video, video.VideoChannel.url, videoObject) | ||
12 | |||
13 | return broadcastToFollowers(data, byAccount, [ byAccount ], t) | ||
14 | } | ||
15 | |||
16 | async function addActivityData (url: string, byAccount: AccountInstance, video: VideoInstance, target: string, object: any) { | ||
17 | const videoPublic = video.privacy === VideoPrivacy.PUBLIC | ||
18 | |||
19 | const { to, cc } = await getAudience(byAccount, videoPublic) | ||
20 | const activity: ActivityAdd = { | ||
21 | type: 'Add', | ||
22 | id: url, | ||
23 | actor: byAccount.url, | ||
24 | to, | ||
25 | cc, | ||
26 | object, | ||
27 | target | ||
28 | } | ||
29 | |||
30 | return activity | ||
31 | } | ||
32 | |||
33 | // --------------------------------------------------------------------------- | ||
34 | |||
35 | export { | ||
36 | addActivityData, | ||
37 | sendAddVideo | ||
38 | } | ||