]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/lib/activitypub/send/send-announce.ts
4b3a4ef758ea5438cab86bcbb698c616fb81b1ac
[github/Chocobozzz/PeerTube.git] / server / lib / activitypub / send / send-announce.ts
1 import { Transaction } from 'sequelize'
2 import { AccountInstance, VideoInstance } from '../../../models'
3 import { VideoChannelInstance } from '../../../models/video/video-channel-interface'
4 import { broadcastToFollowers } from './misc'
5 import { addActivityData } from './send-add'
6 import { createActivityData } from './send-create'
7 import { getAnnounceActivityPubUrl } from '../url'
8
9 async function sendVideoAnnounce (byAccount: AccountInstance, video: VideoInstance, t: Transaction) {
10 const url = getAnnounceActivityPubUrl(video.url, byAccount)
11
12 const videoChannel = video.VideoChannel
13 const announcedActivity = await addActivityData(url, videoChannel.Account, video, videoChannel.url, video.toActivityPubObject())
14
15 const data = await announceActivityData(url, byAccount, announcedActivity)
16 return broadcastToFollowers(data, byAccount, [ byAccount ], t)
17 }
18
19 async function sendVideoChannelAnnounce (byAccount: AccountInstance, videoChannel: VideoChannelInstance, t: Transaction) {
20 const url = getAnnounceActivityPubUrl(videoChannel.url, byAccount)
21 const announcedActivity = await createActivityData(url, videoChannel.Account, videoChannel.toActivityPubObject())
22
23 const data = await announceActivityData(url, byAccount, announcedActivity)
24 return broadcastToFollowers(data, byAccount, [ byAccount ], t)
25 }
26
27 // ---------------------------------------------------------------------------
28
29 export {
30 sendVideoAnnounce,
31 sendVideoChannelAnnounce
32 }
33
34 // ---------------------------------------------------------------------------
35
36 async function announceActivityData (url: string, byAccount: AccountInstance, object: any) {
37 const activity = {
38 type: 'Announce',
39 id: url,
40 actor: byAccount.url,
41 object
42 }
43
44 return activity
45 }