mirror of https://github.com/Chocobozzz/PeerTube
Add total results field and wrap videos in data field when listing
videospull/10/head
parent
501bc6c2b1
commit
68ce3ae021
|
@ -62,7 +62,7 @@ router.post('/',
|
|||
)
|
||||
router.get('/:id',
|
||||
reqValidatorVideos.videosGet,
|
||||
getVideos
|
||||
getVideo
|
||||
)
|
||||
router.delete('/:id',
|
||||
oAuth2.authenticate,
|
||||
|
@ -165,7 +165,7 @@ function addVideo (req, res, next) {
|
|||
})
|
||||
}
|
||||
|
||||
function getVideos (req, res, next) {
|
||||
function getVideo (req, res, next) {
|
||||
Videos.get(req.params.id, function (err, videoObj) {
|
||||
if (err) return next(err)
|
||||
|
||||
|
@ -179,10 +179,10 @@ function getVideos (req, res, next) {
|
|||
}
|
||||
|
||||
function listVideos (req, res, next) {
|
||||
Videos.list(req.query.start, req.query.count, req.query.sort, function (err, videosList) {
|
||||
Videos.list(req.query.start, req.query.count, req.query.sort, function (err, videosList, totalVideos) {
|
||||
if (err) return next(err)
|
||||
|
||||
res.json(getFormatedVideos(videosList))
|
||||
res.json(getFormatedVideos(videosList, totalVideos))
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -237,10 +237,10 @@ function removeVideo (req, res, next) {
|
|||
}
|
||||
|
||||
function searchVideos (req, res, next) {
|
||||
Videos.search(req.params.name, req.query.start, req.query.count, req.query.sort, function (err, videosList) {
|
||||
Videos.search(req.params.name, req.query.start, req.query.count, req.query.sort, function (err, videosList, totalVideos) {
|
||||
if (err) return next(err)
|
||||
|
||||
res.json(getFormatedVideos(videosList))
|
||||
res.json(getFormatedVideos(videosList, totalVideos))
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -263,14 +263,17 @@ function getFormatedVideo (videoObj) {
|
|||
return formatedVideo
|
||||
}
|
||||
|
||||
function getFormatedVideos (videosObj) {
|
||||
function getFormatedVideos (videosObj, totalVideos) {
|
||||
const formatedVideos = []
|
||||
|
||||
videosObj.forEach(function (videoObj) {
|
||||
formatedVideos.push(getFormatedVideo(videoObj))
|
||||
})
|
||||
|
||||
return formatedVideos
|
||||
return {
|
||||
total: totalVideos,
|
||||
data: formatedVideos
|
||||
}
|
||||
}
|
||||
|
||||
// Maybe the torrent is not seeded, but we catch the error to don't stop the removing process
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
'use strict'
|
||||
|
||||
const async = require('async')
|
||||
const config = require('config')
|
||||
const mongoose = require('mongoose')
|
||||
|
||||
|
@ -81,15 +82,8 @@ function get (id, callback) {
|
|||
}
|
||||
|
||||
function list (start, count, sort, callback) {
|
||||
VideosDB.find({}).skip(start).limit(start + count).sort(sort)
|
||||
.exec(function (err, videosList) {
|
||||
if (err) {
|
||||
logger.error('Cannot get the list of the videos.')
|
||||
return callback(err)
|
||||
}
|
||||
|
||||
return callback(null, videosList)
|
||||
})
|
||||
const query = {}
|
||||
return findWithCount(query, start, count, sort, callback)
|
||||
}
|
||||
|
||||
function listFromUrl (fromUrl, callback) {
|
||||
|
@ -131,17 +125,29 @@ function removeByIds (ids, callback) {
|
|||
}
|
||||
|
||||
function search (name, start, count, sort, callback) {
|
||||
VideosDB.find({ name: new RegExp(name) }).skip(start).limit(start + count).sort(sort)
|
||||
.exec(function (err, videos) {
|
||||
if (err) {
|
||||
logger.error('Cannot search the videos.')
|
||||
return callback(err)
|
||||
}
|
||||
|
||||
return callback(null, videos)
|
||||
})
|
||||
const query = { name: new RegExp(name) }
|
||||
findWithCount(query, start, count, sort, callback)
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
module.exports = Videos
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
function findWithCount (query, start, count, sort, callback) {
|
||||
async.parallel([
|
||||
function (asyncCallback) {
|
||||
VideosDB.find(query).skip(start).limit(start + count).sort(sort).exec(asyncCallback)
|
||||
},
|
||||
function (asyncCallback) {
|
||||
VideosDB.count(query, asyncCallback)
|
||||
}
|
||||
], function (err, results) {
|
||||
if (err) return callback(err)
|
||||
|
||||
const videos = results[0]
|
||||
const totalVideos = results[1]
|
||||
return callback(null, videos, totalVideos)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -299,8 +299,8 @@ describe('Test parameters validator', function () {
|
|||
.end(function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
expect(res.body).to.be.an('array')
|
||||
expect(res.body.length).to.equal(3)
|
||||
expect(res.body.data).to.be.an('array')
|
||||
expect(res.body.data.length).to.equal(3)
|
||||
|
||||
done()
|
||||
})
|
||||
|
|
|
@ -210,8 +210,10 @@ describe('Test advanced friends', function () {
|
|||
function (next) {
|
||||
getVideos(1, function (err, res) {
|
||||
if (err) throw err
|
||||
expect(res.body).to.be.an('array')
|
||||
expect(res.body.length).to.equal(2)
|
||||
|
||||
const videos = res.body.data
|
||||
expect(videos).to.be.an('array')
|
||||
expect(videos.length).to.equal(2)
|
||||
|
||||
next()
|
||||
})
|
||||
|
@ -221,8 +223,10 @@ describe('Test advanced friends', function () {
|
|||
|
||||
getVideos(2, function (err, res) {
|
||||
if (err) throw err
|
||||
expect(res.body).to.be.an('array')
|
||||
expect(res.body.length).to.equal(3)
|
||||
|
||||
const videos = res.body.data
|
||||
expect(videos).to.be.an('array')
|
||||
expect(videos.length).to.equal(3)
|
||||
done()
|
||||
})
|
||||
}
|
||||
|
@ -236,8 +240,9 @@ describe('Test advanced friends', function () {
|
|||
getVideos(1, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
expect(res.body).to.be.an('array')
|
||||
expect(res.body.length).to.equal(5)
|
||||
const videos = res.body.data
|
||||
expect(videos).to.be.an('array')
|
||||
expect(videos.length).to.equal(5)
|
||||
|
||||
done()
|
||||
})
|
||||
|
|
|
@ -60,8 +60,9 @@ describe('Test multiple pods', function () {
|
|||
utils.getVideosList(server.url, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
expect(res.body).to.be.an('array')
|
||||
expect(res.body.length).to.equal(0)
|
||||
const videos = res.body.data
|
||||
expect(videos).to.be.an('array')
|
||||
expect(videos.length).to.equal(0)
|
||||
|
||||
callback()
|
||||
})
|
||||
|
@ -89,13 +90,13 @@ describe('Test multiple pods', function () {
|
|||
utils.getVideosList(server.url, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const videos = res.body
|
||||
const videos = res.body.data
|
||||
expect(videos).to.be.an('array')
|
||||
expect(videos.length).to.equal(1)
|
||||
const video = videos[0]
|
||||
expect(video.name).to.equal('my super name for pod 1')
|
||||
expect(video.description).to.equal('my super description for pod 1')
|
||||
expect(video.podUrl).to.equal('http://localhost:9001')
|
||||
expect(video.podUrl).to.equal('localhost:9001')
|
||||
expect(video.magnetUri).to.exist
|
||||
expect(video.duration).to.equal(10)
|
||||
expect(utils.dateIsValid(video.createdDate)).to.be.true
|
||||
|
@ -145,13 +146,13 @@ describe('Test multiple pods', function () {
|
|||
utils.getVideosList(server.url, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const videos = res.body
|
||||
const videos = res.body.data
|
||||
expect(videos).to.be.an('array')
|
||||
expect(videos.length).to.equal(2)
|
||||
const video = videos[1]
|
||||
expect(video.name).to.equal('my super name for pod 2')
|
||||
expect(video.description).to.equal('my super description for pod 2')
|
||||
expect(video.podUrl).to.equal('http://localhost:9002')
|
||||
expect(video.podUrl).to.equal('localhost:9002')
|
||||
expect(video.magnetUri).to.exist
|
||||
expect(video.duration).to.equal(5)
|
||||
expect(utils.dateIsValid(video.createdDate)).to.be.true
|
||||
|
@ -203,7 +204,7 @@ describe('Test multiple pods', function () {
|
|||
utils.getVideosList(server.url, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const videos = res.body
|
||||
const videos = res.body.data
|
||||
expect(videos).to.be.an('array')
|
||||
expect(videos.length).to.equal(4)
|
||||
|
||||
|
@ -220,14 +221,14 @@ describe('Test multiple pods', function () {
|
|||
|
||||
expect(video1.name).to.equal('my super name for pod 3')
|
||||
expect(video1.description).to.equal('my super description for pod 3')
|
||||
expect(video1.podUrl).to.equal('http://localhost:9003')
|
||||
expect(video1.podUrl).to.equal('localhost:9003')
|
||||
expect(video1.magnetUri).to.exist
|
||||
expect(video1.duration).to.equal(5)
|
||||
expect(utils.dateIsValid(video1.createdDate)).to.be.true
|
||||
|
||||
expect(video2.name).to.equal('my super name for pod 3-2')
|
||||
expect(video2.description).to.equal('my super description for pod 3-2')
|
||||
expect(video2.podUrl).to.equal('http://localhost:9003')
|
||||
expect(video2.podUrl).to.equal('localhost:9003')
|
||||
expect(video2.magnetUri).to.exist
|
||||
expect(video2.duration).to.equal(5)
|
||||
expect(utils.dateIsValid(video2.createdDate)).to.be.true
|
||||
|
@ -273,9 +274,9 @@ describe('Test multiple pods', function () {
|
|||
utils.getVideosList(servers[2].url, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const video = res.body[0]
|
||||
toRemove.push(res.body[2].id)
|
||||
toRemove.push(res.body[3].id)
|
||||
const video = res.body.data[0]
|
||||
toRemove.push(res.body.data[2].id)
|
||||
toRemove.push(res.body.data[3].id)
|
||||
|
||||
webtorrent.add(video.magnetUri, function (torrent) {
|
||||
expect(torrent.files).to.exist
|
||||
|
@ -294,7 +295,7 @@ describe('Test multiple pods', function () {
|
|||
utils.getVideosList(servers[0].url, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const video = res.body[1]
|
||||
const video = res.body.data[1]
|
||||
|
||||
webtorrent.add(video.magnetUri, function (torrent) {
|
||||
expect(torrent.files).to.exist
|
||||
|
@ -313,7 +314,7 @@ describe('Test multiple pods', function () {
|
|||
utils.getVideosList(servers[1].url, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const video = res.body[2]
|
||||
const video = res.body.data[2]
|
||||
|
||||
webtorrent.add(video.magnetUri, function (torrent) {
|
||||
expect(torrent.files).to.exist
|
||||
|
@ -332,7 +333,7 @@ describe('Test multiple pods', function () {
|
|||
utils.getVideosList(servers[0].url, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const video = res.body[3]
|
||||
const video = res.body.data[3]
|
||||
|
||||
webtorrent.add(video.magnetUri, function (torrent) {
|
||||
expect(torrent.files).to.exist
|
||||
|
@ -366,7 +367,7 @@ describe('Test multiple pods', function () {
|
|||
utils.getVideosList(server.url, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const videos = res.body
|
||||
const videos = res.body.data
|
||||
expect(videos).to.be.an('array')
|
||||
expect(videos.length).to.equal(2)
|
||||
expect(videos[0].id).not.to.equal(videos[1].id)
|
||||
|
|
|
@ -47,8 +47,9 @@ describe('Test a single pod', function () {
|
|||
utils.getVideosList(server.url, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
expect(res.body).to.be.an('array')
|
||||
expect(res.body.length).to.equal(0)
|
||||
expect(res.body.total).to.equal(0)
|
||||
expect(res.body.data).to.be.an('array')
|
||||
expect(res.body.data.length).to.equal(0)
|
||||
|
||||
done()
|
||||
})
|
||||
|
@ -66,13 +67,14 @@ describe('Test a single pod', function () {
|
|||
utils.getVideosList(server.url, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
expect(res.body).to.be.an('array')
|
||||
expect(res.body.length).to.equal(1)
|
||||
expect(res.body.total).to.equal(1)
|
||||
expect(res.body.data).to.be.an('array')
|
||||
expect(res.body.data.length).to.equal(1)
|
||||
|
||||
const video = res.body[0]
|
||||
const video = res.body.data[0]
|
||||
expect(video.name).to.equal('my super name')
|
||||
expect(video.description).to.equal('my super description')
|
||||
expect(video.podUrl).to.equal('http://localhost:9001')
|
||||
expect(video.podUrl).to.equal('localhost:9001')
|
||||
expect(video.magnetUri).to.exist
|
||||
expect(video.author).to.equal('root')
|
||||
expect(video.isLocal).to.be.true
|
||||
|
@ -106,7 +108,7 @@ describe('Test a single pod', function () {
|
|||
const video = res.body
|
||||
expect(video.name).to.equal('my super name')
|
||||
expect(video.description).to.equal('my super description')
|
||||
expect(video.podUrl).to.equal('http://localhost:9001')
|
||||
expect(video.podUrl).to.equal('localhost:9001')
|
||||
expect(video.magnetUri).to.exist
|
||||
expect(video.author).to.equal('root')
|
||||
expect(video.isLocal).to.be.true
|
||||
|
@ -131,13 +133,14 @@ describe('Test a single pod', function () {
|
|||
utils.searchVideo(server.url, 'my', function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
expect(res.body).to.be.an('array')
|
||||
expect(res.body.length).to.equal(1)
|
||||
expect(res.body.total).to.equal(1)
|
||||
expect(res.body.data).to.be.an('array')
|
||||
expect(res.body.data.length).to.equal(1)
|
||||
|
||||
const video = res.body[0]
|
||||
const video = res.body.data[0]
|
||||
expect(video.name).to.equal('my super name')
|
||||
expect(video.description).to.equal('my super description')
|
||||
expect(video.podUrl).to.equal('http://localhost:9001')
|
||||
expect(video.podUrl).to.equal('localhost:9001')
|
||||
expect(video.author).to.equal('root')
|
||||
expect(video.isLocal).to.be.true
|
||||
expect(utils.dateIsValid(video.createdDate)).to.be.true
|
||||
|
@ -155,8 +158,9 @@ describe('Test a single pod', function () {
|
|||
utils.searchVideo(server.url, 'hello', function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
expect(res.body).to.be.an('array')
|
||||
expect(res.body.length).to.equal(0)
|
||||
expect(res.body.total).to.equal(0)
|
||||
expect(res.body.data).to.be.an('array')
|
||||
expect(res.body.data.length).to.equal(0)
|
||||
|
||||
done()
|
||||
})
|
||||
|
@ -179,8 +183,9 @@ describe('Test a single pod', function () {
|
|||
utils.getVideosList(server.url, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
expect(res.body).to.be.an('array')
|
||||
expect(res.body.length).to.equal(0)
|
||||
expect(res.body.total).to.equal(0)
|
||||
expect(res.body.data).to.be.an('array')
|
||||
expect(res.body.data.length).to.equal(0)
|
||||
|
||||
done()
|
||||
})
|
||||
|
@ -201,7 +206,8 @@ describe('Test a single pod', function () {
|
|||
utils.getVideosList(server.url, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const videos = res.body
|
||||
expect(res.body.total).to.equal(6)
|
||||
const videos = res.body.data
|
||||
expect(videos).to.be.an('array')
|
||||
expect(videos.length).to.equal(6)
|
||||
|
||||
|
@ -221,7 +227,7 @@ describe('Test a single pod', function () {
|
|||
utils.getVideosList(server.url, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const videos = res.body
|
||||
const videos = res.body.data
|
||||
// For the next test
|
||||
videosListBase = videos
|
||||
|
||||
|
@ -243,7 +249,8 @@ describe('Test a single pod', function () {
|
|||
utils.getVideosListPagination(server.url, 0, 2, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const videos = res.body
|
||||
const videos = res.body.data
|
||||
expect(res.body.total).to.equal(6)
|
||||
expect(videos.length).to.equal(2)
|
||||
expect(videos[0].name === videosListBase[0].name)
|
||||
expect(videos[1].name === videosListBase[1].name)
|
||||
|
@ -256,7 +263,8 @@ describe('Test a single pod', function () {
|
|||
utils.getVideosListPagination(server.url, 2, 3, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const videos = res.body
|
||||
const videos = res.body.data
|
||||
expect(res.body.total).to.equal(6)
|
||||
expect(videos.length).to.equal(4)
|
||||
expect(videos[0].name === videosListBase[2].name)
|
||||
expect(videos[1].name === videosListBase[3].name)
|
||||
|
@ -270,7 +278,8 @@ describe('Test a single pod', function () {
|
|||
utils.getVideosListPagination(server.url, 5, 6, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const videos = res.body
|
||||
const videos = res.body.data
|
||||
expect(res.body.total).to.equal(6)
|
||||
expect(videos.length).to.equal(1)
|
||||
expect(videos[0].name === videosListBase[5].name)
|
||||
|
||||
|
@ -282,7 +291,8 @@ describe('Test a single pod', function () {
|
|||
utils.searchVideoWithPagination(server.url, 'webm', 0, 1, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const videos = res.body
|
||||
const videos = res.body.data
|
||||
expect(res.body.total).to.equal(4)
|
||||
expect(videos.length).to.equal(1)
|
||||
expect(videos[0].name === 'video_short.webm name')
|
||||
|
||||
|
@ -294,7 +304,8 @@ describe('Test a single pod', function () {
|
|||
utils.searchVideoWithPagination(server.url, 'webm', 2, 2, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const videos = res.body
|
||||
const videos = res.body.data
|
||||
expect(res.body.total).to.equal(4)
|
||||
expect(videos.length).to.equal(2)
|
||||
expect(videos[0].name === 'video_short2.webm name')
|
||||
expect(videos[1].name === 'video_short3.webm name')
|
||||
|
@ -307,7 +318,8 @@ describe('Test a single pod', function () {
|
|||
utils.searchVideoWithPagination(server.url, 'webm', 0, 15, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const videos = res.body
|
||||
const videos = res.body.data
|
||||
expect(res.body.total).to.equal(4)
|
||||
expect(videos.length).to.equal(4)
|
||||
|
||||
done()
|
||||
|
@ -318,7 +330,8 @@ describe('Test a single pod', function () {
|
|||
utils.getVideosListSort(server.url, '-name', function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const videos = res.body
|
||||
const videos = res.body.data
|
||||
expect(res.body.total).to.equal(6)
|
||||
expect(videos.length).to.equal(6)
|
||||
expect(videos[5].name === 'video_short.mp4 name')
|
||||
expect(videos[4].name === 'video_short.ogv name')
|
||||
|
@ -335,7 +348,8 @@ describe('Test a single pod', function () {
|
|||
utils.searchVideoWithSort(server.url, 'webm', 'name', function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const videos = res.body
|
||||
const videos = res.body.data
|
||||
expect(res.body.total).to.equal(4)
|
||||
expect(videos.length).to.equal(4)
|
||||
|
||||
expect(videos[0].name === 'video_short.webm name')
|
||||
|
|
|
@ -108,7 +108,7 @@ describe('Test users', function () {
|
|||
utils.getVideosList(server.url, function (err, res) {
|
||||
if (err) throw err
|
||||
|
||||
const video = res.body[0]
|
||||
const video = res.body.data[0]
|
||||
expect(video.author).to.equal('root')
|
||||
|
||||
videoId = video.id
|
||||
|
|
Loading…
Reference in New Issue