1 import { sanitizeAndCheckVideoTorrentObject } from '@server/helpers/custom-validators/activitypub/videos'
2 import { logger, loggerTagsFactory } from '@server/helpers/logger'
3 import { doJSONRequest } from '@server/helpers/requests'
4 import { VideoObject } from '@shared/models'
5 import { checkUrlsSameHost } from '../../url'
7 const lTags = loggerTagsFactory('ap', 'video')
9 async function fetchRemoteVideo (videoUrl: string): Promise<{ statusCode: number, videoObject: VideoObject }> {
10 logger.info('Fetching remote video %s.', videoUrl, lTags(videoUrl))
12 const { statusCode, body } = await doJSONRequest<any>(videoUrl, { activityPub: true })
14 if (sanitizeAndCheckVideoTorrentObject(body) === false || checkUrlsSameHost(body.id, videoUrl) !== true) {
15 logger.debug('Remote video JSON is not valid.', { body, ...lTags(videoUrl) })
17 return { statusCode, videoObject: undefined }
20 return { statusCode, videoObject: body }