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