From 54141398354e6e7b94aa3065a705a1251390111c Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 20 Nov 2017 09:43:39 +0100 Subject: Refractor activity pub lib/helpers --- server/lib/activitypub/send/send-update.ts | 55 ++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 server/lib/activitypub/send/send-update.ts (limited to 'server/lib/activitypub/send/send-update.ts') diff --git a/server/lib/activitypub/send/send-update.ts b/server/lib/activitypub/send/send-update.ts new file mode 100644 index 000000000..42738f973 --- /dev/null +++ b/server/lib/activitypub/send/send-update.ts @@ -0,0 +1,55 @@ +import { Transaction } from 'sequelize' +import { ActivityUpdate } from '../../../../shared/models/activitypub/activity' +import { getUpdateActivityPubUrl } from '../../../helpers/activitypub' +import { database as db } from '../../../initializers' +import { AccountInstance, VideoChannelInstance, VideoInstance } from '../../../models' +import { broadcastToFollowers, getAudience } from './misc' + +async function sendUpdateVideoChannel (videoChannel: VideoChannelInstance, t: Transaction) { + const byAccount = videoChannel.Account + + const url = getUpdateActivityPubUrl(videoChannel.url, videoChannel.updatedAt.toISOString()) + const videoChannelObject = videoChannel.toActivityPubObject() + const data = await updateActivityData(url, byAccount, videoChannelObject) + + const accountsInvolved = await db.VideoChannelShare.loadAccountsByShare(videoChannel.id) + accountsInvolved.push(byAccount) + + return broadcastToFollowers(data, byAccount, accountsInvolved, t) +} + +async function sendUpdateVideo (video: VideoInstance, t: Transaction) { + const byAccount = video.VideoChannel.Account + + const url = getUpdateActivityPubUrl(video.url, video.updatedAt.toISOString()) + const videoObject = video.toActivityPubObject() + const data = await updateActivityData(url, byAccount, videoObject) + + const accountsInvolved = await db.VideoShare.loadAccountsByShare(video.id) + accountsInvolved.push(byAccount) + + return broadcastToFollowers(data, byAccount, accountsInvolved, t) +} + +// --------------------------------------------------------------------------- + +export { + sendUpdateVideoChannel, + sendUpdateVideo +} + +// --------------------------------------------------------------------------- + +async function updateActivityData (url: string, byAccount: AccountInstance, object: any) { + const { to, cc } = await getAudience(byAccount) + const activity: ActivityUpdate = { + type: 'Update', + id: url, + actor: byAccount.url, + to, + cc, + object + } + + return activity +} -- cgit v1.2.3