)
router.get('/:id',
reqValidatorVideos.videosGet,
- getVideos
+ getVideo
)
router.delete('/:id',
oAuth2.authenticate,
})
}
-function getVideos (req, res, next) {
+function getVideo (req, res, next) {
Videos.get(req.params.id, function (err, videoObj) {
if (err) return next(err)
}
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))
})
}
}
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))
})
}
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
'use strict'
+const async = require('async')
const config = require('config')
const mongoose = require('mongoose')
}
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) {
}
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)
+ })
+}
.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()
})
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()
})
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()
})
}
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()
})
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()
})
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
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
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)
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
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
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
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
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
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)
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()
})
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
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
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
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()
})
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()
})
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)
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
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)
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)
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)
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')
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')
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()
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')
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')
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