]>
Commit | Line | Data |
---|---|---|
1 | import { Job } from 'bullmq' | |
2 | import { refreshVideoPlaylistIfNeeded } from '@server/lib/activitypub/playlists' | |
3 | import { refreshVideoIfNeeded } from '@server/lib/activitypub/videos' | |
4 | import { loadVideoByUrl } from '@server/lib/model-loaders' | |
5 | import { RefreshPayload } from '@shared/models' | |
6 | import { logger } from '../../../helpers/logger' | |
7 | import { ActorModel } from '../../../models/actor/actor' | |
8 | import { VideoPlaylistModel } from '../../../models/video/video-playlist' | |
9 | import { refreshActorIfNeeded } from '../../activitypub/actors' | |
10 | ||
11 | async function refreshAPObject (job: Job) { | |
12 | const payload = job.data as RefreshPayload | |
13 | ||
14 | logger.info('Processing AP refresher in job %s for %s.', job.id, payload.url) | |
15 | ||
16 | if (payload.type === 'video') return refreshVideo(payload.url) | |
17 | if (payload.type === 'video-playlist') return refreshVideoPlaylist(payload.url) | |
18 | if (payload.type === 'actor') return refreshActor(payload.url) | |
19 | } | |
20 | ||
21 | // --------------------------------------------------------------------------- | |
22 | ||
23 | export { | |
24 | refreshAPObject | |
25 | } | |
26 | ||
27 | // --------------------------------------------------------------------------- | |
28 | ||
29 | async function refreshVideo (videoUrl: string) { | |
30 | const fetchType = 'all' as 'all' | |
31 | const syncParam = { rates: true, shares: true, comments: true, thumbnail: true } | |
32 | ||
33 | const videoFromDatabase = await loadVideoByUrl(videoUrl, fetchType) | |
34 | if (videoFromDatabase) { | |
35 | const refreshOptions = { | |
36 | video: videoFromDatabase, | |
37 | fetchedType: fetchType, | |
38 | syncParam | |
39 | } | |
40 | ||
41 | await refreshVideoIfNeeded(refreshOptions) | |
42 | } | |
43 | } | |
44 | ||
45 | async function refreshActor (actorUrl: string) { | |
46 | const fetchType = 'all' as 'all' | |
47 | const actor = await ActorModel.loadByUrlAndPopulateAccountAndChannel(actorUrl) | |
48 | ||
49 | if (actor) { | |
50 | await refreshActorIfNeeded({ actor, fetchedType: fetchType }) | |
51 | } | |
52 | } | |
53 | ||
54 | async function refreshVideoPlaylist (playlistUrl: string) { | |
55 | const playlist = await VideoPlaylistModel.loadByUrlAndPopulateAccount(playlistUrl) | |
56 | ||
57 | if (playlist) { | |
58 | await refreshVideoPlaylistIfNeeded(playlist) | |
59 | } | |
60 | } |