From 2df82d42cb57783cd90ccfc11fc8ffe4b95ebb70 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 18 Mar 2016 16:28:09 +0100 Subject: [PATCH] Change api output for videos --- .../list/videos-list.component.html | 4 +-- client/angular/videos/models/video.ts | 4 ++- server/controllers/api/v1/videos.js | 36 +++++++++++++++---- server/lib/videos.js | 4 +-- server/middlewares/reqValidators/videos.js | 16 ++++----- server/tests/api/multiplePods.js | 14 ++++---- server/tests/api/singlePod.js | 26 ++++++++++++-- server/tests/api/utils.js | 12 +++++++ 8 files changed, 87 insertions(+), 29 deletions(-) diff --git a/client/angular/videos/components/list/videos-list.component.html b/client/angular/videos/components/list/videos-list.component.html index 7ecdacee4..38708aff6 100644 --- a/client/angular/videos/components/list/videos-list.component.html +++ b/client/angular/videos/components/list/videos-list.component.html @@ -1,8 +1,8 @@
- {{ video.name }} + {{ video.name }} {{ video.podUrl }} - +
diff --git a/client/angular/videos/models/video.ts b/client/angular/videos/models/video.ts index 2f998c49a..e52c6d886 100644 --- a/client/angular/videos/models/video.ts +++ b/client/angular/videos/models/video.ts @@ -1,6 +1,8 @@ export interface Video { - _id: string; + id: string; name: string; description: string; magnetUri: string; + podUrl: string; + isLocal: boolean; } diff --git a/server/controllers/api/v1/videos.js b/server/controllers/api/v1/videos.js index 1eea417d4..4384724c1 100644 --- a/server/controllers/api/v1/videos.js +++ b/server/controllers/api/v1/videos.js @@ -83,14 +83,15 @@ function addVideo (req, res, next) { } function getVideos (req, res, next) { - Videos.get(req.params.id, function (err, video) { + Videos.get(req.params.id, function (err, video_obj) { if (err) return next(err) - if (video === null) { - res.type('json').status(204).end() + const state = videos.getVideoState(video_obj) + if (state.exist === false) { + return res.type('json').status(204).end() } - res.json(video) + res.json(getFormatedVideo(video_obj)) }) } @@ -98,7 +99,7 @@ function listVideos (req, res, next) { Videos.list(function (err, videos_list) { if (err) return next(err) - res.json(videos_list) + res.json(getFormatedVideos(videos_list)) }) } @@ -127,12 +128,35 @@ function searchVideos (req, res, next) { Videos.search(req.params.name, function (err, videos_list) { if (err) return next(err) - res.json(videos_list) + res.json(getFormatedVideos(videos_list)) }) } // --------------------------------------------------------------------------- +function getFormatedVideo (video_obj) { + const formated_video = { + id: video_obj._id, + name: video_obj.name, + description: video_obj.description, + podUrl: video_obj.podUrl, + isLocal: videos.getVideoState(video_obj).owned, + magnetUri: video_obj.magnetUri + } + + return formated_video +} + +function getFormatedVideos (videos_obj) { + const formated_videos = [] + + videos_obj.forEach(function (video_obj) { + formated_videos.push(getFormatedVideo(video_obj)) + }) + + return formated_videos +} + // Maybe the torrent is not seeded, but we catch the error to don't stop the removing process function removeTorrent (magnetUri, callback) { try { diff --git a/server/lib/videos.js b/server/lib/videos.js index eb3a0125a..24178561d 100644 --- a/server/lib/videos.js +++ b/server/lib/videos.js @@ -16,14 +16,14 @@ const videos = { seedAllExisting: seedAllExisting } -function getVideoState (video, callback) { +function getVideoState (video) { const exist = (video !== null) let owned = false if (exist === true) { owned = (video.namePath !== null) } - return callback({ exist: exist, owned: owned }) + return { exist: exist, owned: owned } } function seed (path, callback) { diff --git a/server/middlewares/reqValidators/videos.js b/server/middlewares/reqValidators/videos.js index 4057e72cd..12e878e81 100644 --- a/server/middlewares/reqValidators/videos.js +++ b/server/middlewares/reqValidators/videos.js @@ -35,11 +35,10 @@ function videosGet (req, res, next) { res.sendStatus(500) } - videos.getVideoState(video, function (state) { - if (state.exist === false) return res.status(404).send('Video not found') + const state = videos.getVideoState(video) + if (state.exist === false) return res.status(404).send('Video not found') - next() - }) + next() }) }) } @@ -56,12 +55,11 @@ function videosRemove (req, res, next) { res.sendStatus(500) } - videos.getVideoState(video, function (state) { - if (state.exist === false) return res.status(404).send('Video not found') - else if (state.owned === false) return res.status(403).send('Cannot remove video of another pod') + const state = videos.getVideoState(video) + if (state.exist === false) return res.status(404).send('Video not found') + else if (state.owned === false) return res.status(403).send('Cannot remove video of another pod') - next() - }) + next() }) }) } diff --git a/server/tests/api/multiplePods.js b/server/tests/api/multiplePods.js index e8b182622..0e2355a55 100644 --- a/server/tests/api/multiplePods.js +++ b/server/tests/api/multiplePods.js @@ -205,8 +205,8 @@ describe('Test multiple pods', function () { if (err) throw err const video = res.body[0] - to_remove.push(res.body[2]._id) - to_remove.push(res.body[3]._id) + to_remove.push(res.body[2].id) + to_remove.push(res.body[3].id) webtorrent.add(video.magnetUri, function (torrent) { expect(torrent.files).to.exist @@ -300,11 +300,11 @@ describe('Test multiple pods', function () { const videos = res.body expect(videos).to.be.an('array') expect(videos.length).to.equal(2) - expect(videos[0]._id).not.to.equal(videos[1]._id) - expect(videos[0]._id).not.to.equal(to_remove[0]) - expect(videos[1]._id).not.to.equal(to_remove[0]) - expect(videos[0]._id).not.to.equal(to_remove[1]) - expect(videos[1]._id).not.to.equal(to_remove[1]) + expect(videos[0].id).not.to.equal(videos[1].id) + expect(videos[0].id).not.to.equal(to_remove[0]) + expect(videos[1].id).not.to.equal(to_remove[0]) + expect(videos[0].id).not.to.equal(to_remove[1]) + expect(videos[1].id).not.to.equal(to_remove[1]) callback() }) diff --git a/server/tests/api/singlePod.js b/server/tests/api/singlePod.js index 14f893f13..0b96f221a 100644 --- a/server/tests/api/singlePod.js +++ b/server/tests/api/singlePod.js @@ -68,7 +68,30 @@ describe('Test a single pod', function () { expect(video.podUrl).to.equal('http://localhost:9001') expect(video.magnetUri).to.exist - video_id = video._id + video_id = video.id + + webtorrent.add(video.magnetUri, function (torrent) { + expect(torrent.files).to.exist + expect(torrent.files.length).to.equal(1) + expect(torrent.files[0].path).to.exist.and.to.not.equal('') + + done() + }) + }) + }) + + it('Should get the video', function (done) { + // Yes, this could be long + this.timeout(60000) + + utils.getVideo(url, video_id, function (err, res) { + if (err) throw err + + 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.magnetUri).to.exist webtorrent.add(video.magnetUri, function (torrent) { expect(torrent.files).to.exist @@ -91,7 +114,6 @@ describe('Test a single pod', function () { 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.magnetUri).to.exist done() }) diff --git a/server/tests/api/utils.js b/server/tests/api/utils.js index 05142085f..ea0982e81 100644 --- a/server/tests/api/utils.js +++ b/server/tests/api/utils.js @@ -9,6 +9,7 @@ const request = require('supertest') const testUtils = { flushTests: flushTests, getFriendsList: getFriendsList, + getVideo: getVideo, getVideosList: getVideosList, makeFriends: makeFriends, quitFriends: quitFriends, @@ -36,6 +37,17 @@ function getFriendsList (url, end) { .end(end) } +function getVideo (url, id, end) { + const path = '/api/v1/videos/' + id + + request(url) + .get(path) + .set('Accept', 'application/json') + .expect(200) + .expect('Content-Type', /json/) + .end(end) +} + function getVideosList (url, end) { const path = '/api/v1/videos' -- 2.41.0