asyncRetryTransactionMiddleware,
authenticate,
commonVideosFiltersValidator,
+ optionalAuthenticate,
paginationValidator,
setDefaultPagination,
setDefaultSort
import { resetSequelizeInstance } from '../../helpers/database-utils'
import { VideoPlaylistModel } from '../../models/video/video-playlist'
import {
+ commonVideoPlaylistFiltersValidator,
videoPlaylistsAddValidator,
videoPlaylistsAddVideoValidator,
videoPlaylistsDeleteValidator,
import { processImage } from '../../helpers/image-utils'
import { join } from 'path'
import { UserModel } from '../../models/account/user'
-import {
- getVideoPlaylistActivityPubUrl,
- getVideoPlaylistElementActivityPubUrl,
- sendCreateVideoPlaylist,
- sendDeleteVideoPlaylist,
- sendUpdateVideoPlaylist
-} from '../../lib/activitypub'
+import { sendCreateVideoPlaylist, sendDeleteVideoPlaylist, sendUpdateVideoPlaylist } from '../../lib/activitypub/send'
+import { getVideoPlaylistActivityPubUrl, getVideoPlaylistElementActivityPubUrl } from '../../lib/activitypub/url'
import { VideoPlaylistUpdate } from '../../../shared/models/videos/playlist/video-playlist-update.model'
import { VideoModel } from '../../models/video/video'
import { VideoPlaylistElementModel } from '../../models/video/video-playlist-element'
import { VideoPlaylistElementCreate } from '../../../shared/models/videos/playlist/video-playlist-element-create.model'
import { VideoPlaylistElementUpdate } from '../../../shared/models/videos/playlist/video-playlist-element-update.model'
import { copy, pathExists } from 'fs-extra'
+import { AccountModel } from '../../models/account/account'
const reqThumbnailFile = createReqFiles([ 'thumbnailfile' ], MIMETYPES.IMAGE.MIMETYPE_EXT, { thumbnailfile: CONFIG.STORAGE.TMP_DIR })
videoPlaylistsSortValidator,
setDefaultSort,
setDefaultPagination,
+ commonVideoPlaylistFiltersValidator,
asyncMiddleware(listVideoPlaylists)
)
asyncMiddleware(videoPlaylistsGetValidator),
paginationValidator,
setDefaultPagination,
+ optionalAuthenticate,
commonVideosFiltersValidator,
asyncMiddleware(getVideoPlaylistVideos)
)
asyncRetryTransactionMiddleware(addVideoInPlaylist)
)
-videoPlaylistRouter.put('/:playlistId/videos',
+videoPlaylistRouter.post('/:playlistId/videos/reorder',
authenticate,
asyncMiddleware(videoPlaylistsReorderVideosValidator),
asyncRetryTransactionMiddleware(reorderVideosPlaylist)
followerActorId: serverActor.id,
start: req.query.start,
count: req.query.count,
- sort: req.query.sort
+ sort: req.query.sort,
+ type: req.query.type
})
return res.json(getFormattedObjects(resultList.data, resultList.total))
const videoPlaylistCreated: VideoPlaylistModel = await sequelizeTypescript.transaction(async t => {
const videoPlaylistCreated = await videoPlaylist.save({ transaction: t })
+ // We need more attributes for the federation
+ videoPlaylistCreated.OwnerAccount = await AccountModel.load(user.Account.id, t)
await sendCreateVideoPlaylist(videoPlaylistCreated, t)
return videoPlaylistCreated
const videoChannel = res.locals.videoChannel as VideoChannelModel
videoPlaylistInstance.videoChannelId = videoChannel.id
+ videoPlaylistInstance.VideoChannel = videoChannel
}
}
const playlistThumbnailPath = join(CONFIG.STORAGE.THUMBNAILS_DIR, videoPlaylist.getThumbnailName())
if (await pathExists(playlistThumbnailPath) === false) {
+ logger.info('Generating default thumbnail to playlist %s.', videoPlaylist.url)
+
const videoThumbnailPath = join(CONFIG.STORAGE.THUMBNAILS_DIR, video.getThumbnailName())
await copy(videoThumbnailPath, playlistThumbnailPath)
}
const videoPlaylist: VideoPlaylistModel = res.locals.videoPlaylist
const start: number = req.body.startPosition
- const insertAfter: number = req.body.insertAfter
+ const insertAfter: number = req.body.insertAfterPosition
const reorderLength: number = req.body.reorderLength || 1
if (start === insertAfter) {
user: res.locals.oauth ? res.locals.oauth.token.User : undefined
})
- return res.json(getFormattedObjects(resultList.data, resultList.total))
+ const additionalAttributes = { playlistInfo: true }
+ return res.json(getFormattedObjects(resultList.data, resultList.total, { additionalAttributes }))
}