diff options
author | Chocobozzz <me@florianbigard.com> | 2019-03-05 10:58:44 +0100 |
---|---|---|
committer | Chocobozzz <chocobozzz@cpy.re> | 2019-03-18 11:17:59 +0100 |
commit | df0b219d36bf6852cdf2a7ad09ed4a41c6bccefa (patch) | |
tree | c4984e854f5dc18e5c27afd73b843bd52c143034 /server/controllers/api/video-playlist.ts | |
parent | 07b1a18aa678d260009a93e36606c5c5f585723d (diff) | |
download | PeerTube-df0b219d36bf6852cdf2a7ad09ed4a41c6bccefa.tar.gz PeerTube-df0b219d36bf6852cdf2a7ad09ed4a41c6bccefa.tar.zst PeerTube-df0b219d36bf6852cdf2a7ad09ed4a41c6bccefa.zip |
Add playlist rest tests
Diffstat (limited to 'server/controllers/api/video-playlist.ts')
-rw-r--r-- | server/controllers/api/video-playlist.ts | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/server/controllers/api/video-playlist.ts b/server/controllers/api/video-playlist.ts index e026b4d16..8605f3dfc 100644 --- a/server/controllers/api/video-playlist.ts +++ b/server/controllers/api/video-playlist.ts | |||
@@ -17,6 +17,7 @@ import { logger } from '../../helpers/logger' | |||
17 | import { resetSequelizeInstance } from '../../helpers/database-utils' | 17 | import { resetSequelizeInstance } from '../../helpers/database-utils' |
18 | import { VideoPlaylistModel } from '../../models/video/video-playlist' | 18 | import { VideoPlaylistModel } from '../../models/video/video-playlist' |
19 | import { | 19 | import { |
20 | commonVideoPlaylistFiltersValidator, | ||
20 | videoPlaylistsAddValidator, | 21 | videoPlaylistsAddValidator, |
21 | videoPlaylistsAddVideoValidator, | 22 | videoPlaylistsAddVideoValidator, |
22 | videoPlaylistsDeleteValidator, | 23 | videoPlaylistsDeleteValidator, |
@@ -45,6 +46,7 @@ import { VideoPlaylistElementModel } from '../../models/video/video-playlist-ele | |||
45 | import { VideoPlaylistElementCreate } from '../../../shared/models/videos/playlist/video-playlist-element-create.model' | 46 | import { VideoPlaylistElementCreate } from '../../../shared/models/videos/playlist/video-playlist-element-create.model' |
46 | import { VideoPlaylistElementUpdate } from '../../../shared/models/videos/playlist/video-playlist-element-update.model' | 47 | import { VideoPlaylistElementUpdate } from '../../../shared/models/videos/playlist/video-playlist-element-update.model' |
47 | import { copy, pathExists } from 'fs-extra' | 48 | import { copy, pathExists } from 'fs-extra' |
49 | import { AccountModel } from '../../models/account/account' | ||
48 | 50 | ||
49 | const reqThumbnailFile = createReqFiles([ 'thumbnailfile' ], MIMETYPES.IMAGE.MIMETYPE_EXT, { thumbnailfile: CONFIG.STORAGE.TMP_DIR }) | 51 | const reqThumbnailFile = createReqFiles([ 'thumbnailfile' ], MIMETYPES.IMAGE.MIMETYPE_EXT, { thumbnailfile: CONFIG.STORAGE.TMP_DIR }) |
50 | 52 | ||
@@ -55,6 +57,7 @@ videoPlaylistRouter.get('/', | |||
55 | videoPlaylistsSortValidator, | 57 | videoPlaylistsSortValidator, |
56 | setDefaultSort, | 58 | setDefaultSort, |
57 | setDefaultPagination, | 59 | setDefaultPagination, |
60 | commonVideoPlaylistFiltersValidator, | ||
58 | asyncMiddleware(listVideoPlaylists) | 61 | asyncMiddleware(listVideoPlaylists) |
59 | ) | 62 | ) |
60 | 63 | ||
@@ -130,7 +133,8 @@ async function listVideoPlaylists (req: express.Request, res: express.Response) | |||
130 | followerActorId: serverActor.id, | 133 | followerActorId: serverActor.id, |
131 | start: req.query.start, | 134 | start: req.query.start, |
132 | count: req.query.count, | 135 | count: req.query.count, |
133 | sort: req.query.sort | 136 | sort: req.query.sort, |
137 | type: req.query.type | ||
134 | }) | 138 | }) |
135 | 139 | ||
136 | return res.json(getFormattedObjects(resultList.data, resultList.total)) | 140 | return res.json(getFormattedObjects(resultList.data, resultList.total)) |
@@ -171,7 +175,8 @@ async function addVideoPlaylist (req: express.Request, res: express.Response) { | |||
171 | const videoPlaylistCreated: VideoPlaylistModel = await sequelizeTypescript.transaction(async t => { | 175 | const videoPlaylistCreated: VideoPlaylistModel = await sequelizeTypescript.transaction(async t => { |
172 | const videoPlaylistCreated = await videoPlaylist.save({ transaction: t }) | 176 | const videoPlaylistCreated = await videoPlaylist.save({ transaction: t }) |
173 | 177 | ||
174 | videoPlaylistCreated.OwnerAccount = user.Account | 178 | // We need more attributes for the federation |
179 | videoPlaylistCreated.OwnerAccount = await AccountModel.load(user.Account.id, t) | ||
175 | await sendCreateVideoPlaylist(videoPlaylistCreated, t) | 180 | await sendCreateVideoPlaylist(videoPlaylistCreated, t) |
176 | 181 | ||
177 | return videoPlaylistCreated | 182 | return videoPlaylistCreated |
@@ -216,6 +221,7 @@ async function updateVideoPlaylist (req: express.Request, res: express.Response) | |||
216 | const videoChannel = res.locals.videoChannel as VideoChannelModel | 221 | const videoChannel = res.locals.videoChannel as VideoChannelModel |
217 | 222 | ||
218 | videoPlaylistInstance.videoChannelId = videoChannel.id | 223 | videoPlaylistInstance.videoChannelId = videoChannel.id |
224 | videoPlaylistInstance.VideoChannel = videoChannel | ||
219 | } | 225 | } |
220 | } | 226 | } |
221 | 227 | ||
@@ -227,6 +233,8 @@ async function updateVideoPlaylist (req: express.Request, res: express.Response) | |||
227 | } | 233 | } |
228 | 234 | ||
229 | const playlistUpdated = await videoPlaylistInstance.save(sequelizeOptions) | 235 | const playlistUpdated = await videoPlaylistInstance.save(sequelizeOptions) |
236 | // We need more attributes for the federation | ||
237 | playlistUpdated.OwnerAccount = await AccountModel.load(playlistUpdated.OwnerAccount.id, t) | ||
230 | 238 | ||
231 | const isNewPlaylist = wasPrivatePlaylist && playlistUpdated.privacy !== VideoPlaylistPrivacy.PRIVATE | 239 | const isNewPlaylist = wasPrivatePlaylist && playlistUpdated.privacy !== VideoPlaylistPrivacy.PRIVATE |
232 | 240 | ||
@@ -290,11 +298,15 @@ async function addVideoInPlaylist (req: express.Request, res: express.Response) | |||
290 | const playlistThumbnailPath = join(CONFIG.STORAGE.THUMBNAILS_DIR, videoPlaylist.getThumbnailName()) | 298 | const playlistThumbnailPath = join(CONFIG.STORAGE.THUMBNAILS_DIR, videoPlaylist.getThumbnailName()) |
291 | 299 | ||
292 | if (await pathExists(playlistThumbnailPath) === false) { | 300 | if (await pathExists(playlistThumbnailPath) === false) { |
301 | logger.info('Generating default thumbnail to playlist %s.', videoPlaylist.url) | ||
302 | |||
293 | const videoThumbnailPath = join(CONFIG.STORAGE.THUMBNAILS_DIR, video.getThumbnailName()) | 303 | const videoThumbnailPath = join(CONFIG.STORAGE.THUMBNAILS_DIR, video.getThumbnailName()) |
294 | await copy(videoThumbnailPath, playlistThumbnailPath) | 304 | await copy(videoThumbnailPath, playlistThumbnailPath) |
295 | } | 305 | } |
296 | } | 306 | } |
297 | 307 | ||
308 | // We need more attributes for the federation | ||
309 | videoPlaylist.OwnerAccount = await AccountModel.load(videoPlaylist.OwnerAccount.id, t) | ||
298 | await sendUpdateVideoPlaylist(videoPlaylist, t) | 310 | await sendUpdateVideoPlaylist(videoPlaylist, t) |
299 | 311 | ||
300 | return playlistElement | 312 | return playlistElement |
@@ -320,6 +332,8 @@ async function updateVideoPlaylistElement (req: express.Request, res: express.Re | |||
320 | 332 | ||
321 | const element = await videoPlaylistElement.save({ transaction: t }) | 333 | const element = await videoPlaylistElement.save({ transaction: t }) |
322 | 334 | ||
335 | // We need more attributes for the federation | ||
336 | videoPlaylist.OwnerAccount = await AccountModel.load(videoPlaylist.OwnerAccount.id, t) | ||
323 | await sendUpdateVideoPlaylist(videoPlaylist, t) | 337 | await sendUpdateVideoPlaylist(videoPlaylist, t) |
324 | 338 | ||
325 | return element | 339 | return element |
@@ -341,6 +355,8 @@ async function removeVideoFromPlaylist (req: express.Request, res: express.Respo | |||
341 | // Decrease position of the next elements | 355 | // Decrease position of the next elements |
342 | await VideoPlaylistElementModel.increasePositionOf(videoPlaylist.id, positionToDelete, null, -1, t) | 356 | await VideoPlaylistElementModel.increasePositionOf(videoPlaylist.id, positionToDelete, null, -1, t) |
343 | 357 | ||
358 | // We need more attributes for the federation | ||
359 | videoPlaylist.OwnerAccount = await AccountModel.load(videoPlaylist.OwnerAccount.id, t) | ||
344 | await sendUpdateVideoPlaylist(videoPlaylist, t) | 360 | await sendUpdateVideoPlaylist(videoPlaylist, t) |
345 | 361 | ||
346 | logger.info('Video playlist element %d of playlist %s deleted.', videoPlaylistElement.position, videoPlaylist.uuid) | 362 | logger.info('Video playlist element %d of playlist %s deleted.', videoPlaylistElement.position, videoPlaylist.uuid) |
@@ -382,6 +398,8 @@ async function reorderVideosPlaylist (req: express.Request, res: express.Respons | |||
382 | // Decrease positions of elements after the old position of our ordered elements (decrease) | 398 | // Decrease positions of elements after the old position of our ordered elements (decrease) |
383 | await VideoPlaylistElementModel.increasePositionOf(videoPlaylist.id, oldPosition, null, -reorderLength, t) | 399 | await VideoPlaylistElementModel.increasePositionOf(videoPlaylist.id, oldPosition, null, -reorderLength, t) |
384 | 400 | ||
401 | // We need more attributes for the federation | ||
402 | videoPlaylist.OwnerAccount = await AccountModel.load(videoPlaylist.OwnerAccount.id, t) | ||
385 | await sendUpdateVideoPlaylist(videoPlaylist, t) | 403 | await sendUpdateVideoPlaylist(videoPlaylist, t) |
386 | }) | 404 | }) |
387 | 405 | ||
@@ -415,5 +433,6 @@ async function getVideoPlaylistVideos (req: express.Request, res: express.Respon | |||
415 | user: res.locals.oauth ? res.locals.oauth.token.User : undefined | 433 | user: res.locals.oauth ? res.locals.oauth.token.User : undefined |
416 | }) | 434 | }) |
417 | 435 | ||
418 | return res.json(getFormattedObjects(resultList.data, resultList.total)) | 436 | const additionalAttributes = { playlistInfo: true } |
437 | return res.json(getFormattedObjects(resultList.data, resultList.total, { additionalAttributes })) | ||
419 | } | 438 | } |