From 69290ab37b8aead01477b9b98fdfad0e69b08582 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 2 Jun 2021 09:35:01 +0200 Subject: Refactor AP video update --- server/lib/activitypub/videos/shared/trackers.ts | 43 ++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 server/lib/activitypub/videos/shared/trackers.ts (limited to 'server/lib/activitypub/videos/shared/trackers.ts') diff --git a/server/lib/activitypub/videos/shared/trackers.ts b/server/lib/activitypub/videos/shared/trackers.ts new file mode 100644 index 000000000..fcb2a5091 --- /dev/null +++ b/server/lib/activitypub/videos/shared/trackers.ts @@ -0,0 +1,43 @@ +import { Transaction } from 'sequelize/types' +import { buildRemoteVideoBaseUrl } from '@server/helpers/activitypub' +import { isAPVideoTrackerUrlObject } from '@server/helpers/custom-validators/activitypub/videos' +import { isArray } from '@server/helpers/custom-validators/misc' +import { REMOTE_SCHEME } from '@server/initializers/constants' +import { TrackerModel } from '@server/models/server/tracker' +import { MVideo, MVideoWithHost } from '@server/types/models' +import { ActivityTrackerUrlObject, VideoObject } from '@shared/models' + +function getTrackerUrls (object: VideoObject, video: MVideoWithHost) { + let wsFound = false + + const trackers = object.url.filter(u => isAPVideoTrackerUrlObject(u)) + .map((u: ActivityTrackerUrlObject) => { + if (isArray(u.rel) && u.rel.includes('websocket')) wsFound = true + + return u.href + }) + + if (wsFound) return trackers + + return [ + buildRemoteVideoBaseUrl(video, '/tracker/socket', REMOTE_SCHEME.WS), + buildRemoteVideoBaseUrl(video, '/tracker/announce') + ] +} + +async function setVideoTrackers (options: { + video: MVideo + trackers: string[] + transaction?: Transaction +}) { + const { video, trackers, transaction } = options + + const trackerInstances = await TrackerModel.findOrCreateTrackers(trackers, transaction) + + await video.$set('Trackers', trackerInstances, { transaction }) +} + +export { + getTrackerUrls, + setVideoTrackers +} -- cgit v1.2.3