From 0a6658fdcbd779ada8f3758048c326e997902d5a Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 11 Jul 2017 16:01:56 +0200 Subject: Use global uuid instead of remoteId for videos --- server/controllers/api/remote/videos.ts | 39 +++++++++++++++++---------------- server/controllers/api/users.ts | 2 +- server/controllers/api/videos/abuse.ts | 4 ++-- server/controllers/api/videos/index.ts | 2 +- server/controllers/api/videos/rate.ts | 2 +- server/controllers/client.ts | 13 ++++++++--- 6 files changed, 35 insertions(+), 27 deletions(-) (limited to 'server/controllers') diff --git a/server/controllers/api/remote/videos.ts b/server/controllers/api/remote/videos.ts index 96eab6d52..30771d8c4 100644 --- a/server/controllers/api/remote/videos.ts +++ b/server/controllers/api/remote/videos.ts @@ -133,7 +133,7 @@ function processVideosEventsRetryWrapper (eventData: RemoteVideoEventData, fromP function processVideosEvents (eventData: RemoteVideoEventData, fromPod: PodInstance) { return db.sequelize.transaction(t => { - return fetchOwnedVideo(eventData.remoteId) + return fetchVideoByUUID(eventData.uuid) .then(videoInstance => { const options = { transaction: t } @@ -176,7 +176,7 @@ function processVideosEvents (eventData: RemoteVideoEventData, fromPod: PodInsta return quickAndDirtyUpdatesVideoToFriends(qadusParams, t) }) }) - .then(() => logger.info('Remote video event processed for video %s.', eventData.remoteId)) + .then(() => logger.info('Remote video event processed for video %s.', eventData.uuid)) .catch(err => { logger.debug('Cannot process a video event.', err) throw err @@ -196,7 +196,7 @@ function quickAndDirtyUpdateVideo (videoData: RemoteQaduVideoData, fromPod: PodI let videoName return db.sequelize.transaction(t => { - return fetchRemoteVideo(fromPod.host, videoData.remoteId) + return fetchVideoByHostAndUUID(fromPod.host, videoData.uuid) .then(videoInstance => { const options = { transaction: t } @@ -232,12 +232,12 @@ function addRemoteVideoRetryWrapper (videoToCreateData: RemoteVideoCreateData, f } function addRemoteVideo (videoToCreateData: RemoteVideoCreateData, fromPod: PodInstance) { - logger.debug('Adding remote video "%s".', videoToCreateData.remoteId) + logger.debug('Adding remote video "%s".', videoToCreateData.uuid) return db.sequelize.transaction(t => { - return db.Video.loadByHostAndRemoteId(fromPod.host, videoToCreateData.remoteId) + return db.Video.loadByUUID(videoToCreateData.uuid) .then(video => { - if (video) throw new Error('RemoteId and host pair is not unique.') + if (video) throw new Error('UUID already exists.') return undefined }) @@ -257,7 +257,7 @@ function addRemoteVideo (videoToCreateData: RemoteVideoCreateData, fromPod: PodI .then(({ author, tagInstances }) => { const videoData = { name: videoToCreateData.name, - remoteId: videoToCreateData.remoteId, + uuid: videoToCreateData.uuid, extname: videoToCreateData.extname, infoHash: videoToCreateData.infoHash, category: videoToCreateData.category, @@ -272,7 +272,8 @@ function addRemoteVideo (videoToCreateData: RemoteVideoCreateData, fromPod: PodI updatedAt: videoToCreateData.updatedAt, views: videoToCreateData.views, likes: videoToCreateData.likes, - dislikes: videoToCreateData.dislikes + dislikes: videoToCreateData.dislikes, + remote: true } const video = db.Video.build(videoData) @@ -314,10 +315,10 @@ function updateRemoteVideoRetryWrapper (videoAttributesToUpdate: RemoteVideoUpda } function updateRemoteVideo (videoAttributesToUpdate: RemoteVideoUpdateData, fromPod: PodInstance) { - logger.debug('Updating remote video "%s".', videoAttributesToUpdate.remoteId) + logger.debug('Updating remote video "%s".', videoAttributesToUpdate.uuid) return db.sequelize.transaction(t => { - return fetchRemoteVideo(fromPod.host, videoAttributesToUpdate.remoteId) + return fetchVideoByHostAndUUID(fromPod.host, videoAttributesToUpdate.uuid) .then(videoInstance => { const tags = videoAttributesToUpdate.tags @@ -359,18 +360,18 @@ function updateRemoteVideo (videoAttributesToUpdate: RemoteVideoUpdateData, from function removeRemoteVideo (videoToRemoveData: RemoteVideoRemoveData, fromPod: PodInstance) { // We need the instance because we have to remove some other stuffs (thumbnail etc) - return fetchRemoteVideo(fromPod.host, videoToRemoveData.remoteId) + return fetchVideoByHostAndUUID(fromPod.host, videoToRemoveData.uuid) .then(video => { - logger.debug('Removing remote video %s.', video.remoteId) + logger.debug('Removing remote video %s.', video.uuid) return video.destroy() }) .catch(err => { - logger.debug('Could not fetch remote video.', { host: fromPod.host, remoteId: videoToRemoveData.remoteId, error: err.stack }) + logger.debug('Could not fetch remote video.', { host: fromPod.host, uuid: videoToRemoveData.uuid, error: err.stack }) }) } function reportAbuseRemoteVideo (reportData: RemoteVideoReportAbuseData, fromPod: PodInstance) { - return fetchOwnedVideo(reportData.videoRemoteId) + return fetchVideoByUUID(reportData.videoUUID) .then(video => { logger.debug('Reporting remote abuse for video %s.', video.id) @@ -386,8 +387,8 @@ function reportAbuseRemoteVideo (reportData: RemoteVideoReportAbuseData, fromPod .catch(err => logger.error('Cannot create remote abuse video.', err)) } -function fetchOwnedVideo (id: string) { - return db.Video.load(id) +function fetchVideoByUUID (id: string) { + return db.Video.loadByUUID(id) .then(video => { if (!video) throw new Error('Video not found') @@ -399,15 +400,15 @@ function fetchOwnedVideo (id: string) { }) } -function fetchRemoteVideo (podHost: string, remoteId: string) { - return db.Video.loadByHostAndRemoteId(podHost, remoteId) +function fetchVideoByHostAndUUID (podHost: string, uuid: string) { + return db.Video.loadByHostAndUUID(podHost, uuid) .then(video => { if (!video) throw new Error('Video not found') return video }) .catch(err => { - logger.error('Cannot load video from host and remote id.', { error: err.stack, podHost, remoteId }) + logger.error('Cannot load video from host and uuid.', { error: err.stack, podHost, uuid }) throw err }) } diff --git a/server/controllers/api/users.ts b/server/controllers/api/users.ts index e79480521..6c375cc5b 100644 --- a/server/controllers/api/users.ts +++ b/server/controllers/api/users.ts @@ -100,7 +100,7 @@ function getUserInformation (req: express.Request, res: express.Response, next: } function getUserVideoRating (req: express.Request, res: express.Response, next: express.NextFunction) { - const videoId = '' + req.params.videoId + const videoId = +req.params.videoId const userId = +res.locals.oauth.token.User.id db.UserVideoRate.load(userId, videoId, null) diff --git a/server/controllers/api/videos/abuse.ts b/server/controllers/api/videos/abuse.ts index 7d2e3bcfb..5cf0303fb 100644 --- a/server/controllers/api/videos/abuse.ts +++ b/server/controllers/api/videos/abuse.ts @@ -62,7 +62,7 @@ function reportVideoAbuseRetryWrapper (req: express.Request, res: express.Respon } function reportVideoAbuse (req: express.Request, res: express.Response) { - const videoInstance = res.locals.video + const videoInstance = res.locals.video as VideoInstance const reporterUsername = res.locals.oauth.token.User.username const body: VideoAbuseCreate = req.body @@ -81,7 +81,7 @@ function reportVideoAbuse (req: express.Request, res: express.Response) { const reportData = { reporterUsername, reportReason: abuse.reason, - videoRemoteId: videoInstance.remoteId + videoUUID: videoInstance.uuid } return friends.reportAbuseVideoToFriend(reportData, videoInstance, t).then(() => videoInstance) diff --git a/server/controllers/api/videos/index.ts b/server/controllers/api/videos/index.ts index 4ae7ea2ed..e70a5319e 100644 --- a/server/controllers/api/videos/index.ts +++ b/server/controllers/api/videos/index.ts @@ -176,7 +176,7 @@ function addVideo (req: express.Request, res: express.Response, videoFile: Expre .then(({ author, tagInstances }) => { const videoData = { name: videoInfos.name, - remoteId: null, + remote: false, extname: path.extname(videoFile.filename), category: videoInfos.category, licence: videoInfos.licence, diff --git a/server/controllers/api/videos/rate.ts b/server/controllers/api/videos/rate.ts index 8456cbaf2..6ddc69817 100644 --- a/server/controllers/api/videos/rate.ts +++ b/server/controllers/api/videos/rate.ts @@ -69,7 +69,7 @@ function rateVideo (req: express.Request, res: express.Response) { // There was a previous rate, update it if (previousRate) { - // We will remove the previous rate, so we will need to remove it from the video attribute + // We will remove the previous rate, so we will need to update the video count attribute if (previousRate.type === VIDEO_RATE_TYPES.LIKE) likesToIncrement-- else if (previousRate.type === VIDEO_RATE_TYPES.DISLIKE) dislikesToIncrement-- diff --git a/server/controllers/client.ts b/server/controllers/client.ts index d42e8396d..ac722a578 100644 --- a/server/controllers/client.ts +++ b/server/controllers/client.ts @@ -78,7 +78,7 @@ function addOpenGraphTags (htmlStringPage: string, video: VideoInstance) { } let tagsString = '' - Object.keys(metaTags).forEach(function (tagName) { + Object.keys(metaTags).forEach(tagName => { const tagValue = metaTags[tagName] tagsString += '' @@ -89,13 +89,20 @@ function addOpenGraphTags (htmlStringPage: string, video: VideoInstance) { function generateWatchHtmlPage (req: express.Request, res: express.Response, next: express.NextFunction) { const videoId = '' + req.params.id + let videoPromise: Promise // Let Angular application handle errors - if (!validator.isUUID(videoId, 4)) return res.sendFile(indexPath) + if (validator.isUUID(videoId, 4)) { + videoPromise = db.Video.loadByUUIDAndPopulateAuthorAndPodAndTags(videoId) + } else if (validator.isInt(videoId)) { + videoPromise = db.Video.loadAndPopulateAuthorAndPodAndTags(+videoId) + } else { + return res.sendFile(indexPath) + } Promise.all([ readFileBufferPromise(indexPath), - db.Video.loadAndPopulateAuthorAndPodAndTags(videoId) + videoPromise ]) .then(([ file, video ]) => { file = file as Buffer -- cgit v1.2.3