diff options
Diffstat (limited to 'server/lib/job-queue/handlers')
-rw-r--r-- | server/lib/job-queue/handlers/activitypub-refresher.ts | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/server/lib/job-queue/handlers/activitypub-refresher.ts b/server/lib/job-queue/handlers/activitypub-refresher.ts new file mode 100644 index 000000000..7752b3b40 --- /dev/null +++ b/server/lib/job-queue/handlers/activitypub-refresher.ts | |||
@@ -0,0 +1,40 @@ | |||
1 | import * as Bull from 'bull' | ||
2 | import { logger } from '../../../helpers/logger' | ||
3 | import { fetchVideoByUrl } from '../../../helpers/video' | ||
4 | import { refreshVideoIfNeeded } from '../../activitypub' | ||
5 | |||
6 | export type RefreshPayload = { | ||
7 | videoUrl: string | ||
8 | type: 'video' | ||
9 | } | ||
10 | |||
11 | async function refreshAPObject (job: Bull.Job) { | ||
12 | const payload = job.data as RefreshPayload | ||
13 | logger.info('Processing AP refresher in job %d.', job.id) | ||
14 | |||
15 | if (payload.type === 'video') return refreshAPVideo(payload.videoUrl) | ||
16 | } | ||
17 | |||
18 | // --------------------------------------------------------------------------- | ||
19 | |||
20 | export { | ||
21 | refreshAPObject | ||
22 | } | ||
23 | |||
24 | // --------------------------------------------------------------------------- | ||
25 | |||
26 | async function refreshAPVideo (videoUrl: string) { | ||
27 | const fetchType = 'all' as 'all' | ||
28 | const syncParam = { likes: true, dislikes: true, shares: true, comments: true, thumbnail: true } | ||
29 | |||
30 | const videoFromDatabase = await fetchVideoByUrl(videoUrl, fetchType) | ||
31 | if (videoFromDatabase) { | ||
32 | const refreshOptions = { | ||
33 | video: videoFromDatabase, | ||
34 | fetchedType: fetchType, | ||
35 | syncParam | ||
36 | } | ||
37 | |||
38 | await refreshVideoIfNeeded(refreshOptions) | ||
39 | } | ||
40 | } | ||