X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Factivitypub%2Fcache-file.ts;h=c3acd7112adddd4a79eb0d409435d81fa0bc727b;hb=49aa917509568a3b96967732512b5ef4ecc50b1b;hp=8252e95e92b99eed1b82690f650c8c89d386ba59;hpb=c2777c1dfe688c8fab1ef2fed50e360100fa9198;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/activitypub/cache-file.ts b/server/lib/activitypub/cache-file.ts index 8252e95e9..c3acd7112 100644 --- a/server/lib/activitypub/cache-file.ts +++ b/server/lib/activitypub/cache-file.ts @@ -1,54 +1,26 @@ -import { CacheFileObject } from '../../../shared/index' -import { VideoRedundancyModel } from '../../models/redundancy/video-redundancy' import { Transaction } from 'sequelize' -import { VideoStreamingPlaylistType } from '../../../shared/models/videos/video-streaming-playlist.type' -import { MActorId, MVideoRedundancy, MVideoWithAllFiles } from '@server/typings/models' - -function cacheFileActivityObjectToDBAttributes (cacheFileObject: CacheFileObject, video: MVideoWithAllFiles, byActor: MActorId) { - - if (cacheFileObject.url.mediaType === 'application/x-mpegURL') { - const url = cacheFileObject.url +import { MActorId, MVideoRedundancy, MVideoWithAllFiles } from '@server/types/models' +import { CacheFileObject, VideoStreamingPlaylistType } from '@shared/models' +import { VideoRedundancyModel } from '../../models/redundancy/video-redundancy' - const playlist = video.VideoStreamingPlaylists.find(t => t.type === VideoStreamingPlaylistType.HLS) - if (!playlist) throw new Error('Cannot find HLS playlist of video ' + video.url) +async function createOrUpdateCacheFile (cacheFileObject: CacheFileObject, video: MVideoWithAllFiles, byActor: MActorId, t: Transaction) { + const redundancyModel = await VideoRedundancyModel.loadByUrl(cacheFileObject.id, t) - return { - expiresOn: cacheFileObject.expires ? new Date(cacheFileObject.expires) : null, - url: cacheFileObject.id, - fileUrl: url.href, - strategy: null, - videoStreamingPlaylistId: playlist.id, - actorId: byActor.id - } + if (redundancyModel) { + return updateCacheFile(cacheFileObject, redundancyModel, video, byActor, t) } - const url = cacheFileObject.url - const videoFile = video.VideoFiles.find(f => { - return f.resolution === url.height && f.fps === url.fps - }) - - if (!videoFile) throw new Error(`Cannot find video file ${url.height} ${url.fps} of video ${video.url}`) - - return { - expiresOn: cacheFileObject.expires ? new Date(cacheFileObject.expires) : null, - url: cacheFileObject.id, - fileUrl: url.href, - strategy: null, - videoFileId: videoFile.id, - actorId: byActor.id - } + return createCacheFile(cacheFileObject, video, byActor, t) } -async function createOrUpdateCacheFile (cacheFileObject: CacheFileObject, video: MVideoWithAllFiles, byActor: MActorId, t: Transaction) { - const redundancyModel = await VideoRedundancyModel.loadByUrl(cacheFileObject.id, t) +// --------------------------------------------------------------------------- - if (!redundancyModel) { - await createCacheFile(cacheFileObject, video, byActor, t) - } else { - await updateCacheFile(cacheFileObject, redundancyModel, video, byActor, t) - } +export { + createOrUpdateCacheFile } +// --------------------------------------------------------------------------- + function createCacheFile (cacheFileObject: CacheFileObject, video: MVideoWithAllFiles, byActor: MActorId, t: Transaction) { const attributes = cacheFileActivityObjectToDBAttributes(cacheFileObject, video, byActor) @@ -74,9 +46,37 @@ function updateCacheFile ( return redundancyModel.save({ transaction: t }) } -export { - createOrUpdateCacheFile, - createCacheFile, - updateCacheFile, - cacheFileActivityObjectToDBAttributes +function cacheFileActivityObjectToDBAttributes (cacheFileObject: CacheFileObject, video: MVideoWithAllFiles, byActor: MActorId) { + + if (cacheFileObject.url.mediaType === 'application/x-mpegURL') { + const url = cacheFileObject.url + + const playlist = video.VideoStreamingPlaylists.find(t => t.type === VideoStreamingPlaylistType.HLS) + if (!playlist) throw new Error('Cannot find HLS playlist of video ' + video.url) + + return { + expiresOn: cacheFileObject.expires ? new Date(cacheFileObject.expires) : null, + url: cacheFileObject.id, + fileUrl: url.href, + strategy: null, + videoStreamingPlaylistId: playlist.id, + actorId: byActor.id + } + } + + const url = cacheFileObject.url + const videoFile = video.VideoFiles.find(f => { + return f.resolution === url.height && f.fps === url.fps + }) + + if (!videoFile) throw new Error(`Cannot find video file ${url.height} ${url.fps} of video ${video.url}`) + + return { + expiresOn: cacheFileObject.expires ? new Date(cacheFileObject.expires) : null, + url: cacheFileObject.id, + fileUrl: url.href, + strategy: null, + videoFileId: videoFile.id, + actorId: byActor.id + } }