Change api output for videos
This commit is contained in:
parent
f0f5567b69
commit
2df82d42cb
|
@ -1,8 +1,8 @@
|
||||||
<div *ngFor="#video of videos" class="video">
|
<div *ngFor="#video of videos" class="video">
|
||||||
<div>
|
<div>
|
||||||
<a [routerLink]="['VideosWatch', { id: video._id }]" class="video_name">{{ video.name }}</a>
|
<a [routerLink]="['VideosWatch', { id: video.id }]" class="video_name">{{ video.name }}</a>
|
||||||
<span class="video_pod_url">{{ video.podUrl }}</span>
|
<span class="video_pod_url">{{ video.podUrl }}</span>
|
||||||
<span *ngIf="video.namePath !== null" (click)="removeVideo(video._id)" class="video_remove glyphicon glyphicon-remove"></span>
|
<span *ngIf="video.isLocal === true" (click)="removeVideo(video.id)" class="video_remove glyphicon glyphicon-remove"></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="video_description">
|
<div class="video_description">
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
export interface Video {
|
export interface Video {
|
||||||
_id: string;
|
id: string;
|
||||||
name: string;
|
name: string;
|
||||||
description: string;
|
description: string;
|
||||||
magnetUri: string;
|
magnetUri: string;
|
||||||
|
podUrl: string;
|
||||||
|
isLocal: boolean;
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,14 +83,15 @@ function addVideo (req, res, next) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function getVideos (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 (err) return next(err)
|
||||||
|
|
||||||
if (video === null) {
|
const state = videos.getVideoState(video_obj)
|
||||||
res.type('json').status(204).end()
|
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) {
|
Videos.list(function (err, videos_list) {
|
||||||
if (err) return next(err)
|
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) {
|
Videos.search(req.params.name, function (err, videos_list) {
|
||||||
if (err) return next(err)
|
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
|
// Maybe the torrent is not seeded, but we catch the error to don't stop the removing process
|
||||||
function removeTorrent (magnetUri, callback) {
|
function removeTorrent (magnetUri, callback) {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -16,14 +16,14 @@ const videos = {
|
||||||
seedAllExisting: seedAllExisting
|
seedAllExisting: seedAllExisting
|
||||||
}
|
}
|
||||||
|
|
||||||
function getVideoState (video, callback) {
|
function getVideoState (video) {
|
||||||
const exist = (video !== null)
|
const exist = (video !== null)
|
||||||
let owned = false
|
let owned = false
|
||||||
if (exist === true) {
|
if (exist === true) {
|
||||||
owned = (video.namePath !== null)
|
owned = (video.namePath !== null)
|
||||||
}
|
}
|
||||||
|
|
||||||
return callback({ exist: exist, owned: owned })
|
return { exist: exist, owned: owned }
|
||||||
}
|
}
|
||||||
|
|
||||||
function seed (path, callback) {
|
function seed (path, callback) {
|
||||||
|
|
|
@ -35,11 +35,10 @@ function videosGet (req, res, next) {
|
||||||
res.sendStatus(500)
|
res.sendStatus(500)
|
||||||
}
|
}
|
||||||
|
|
||||||
videos.getVideoState(video, function (state) {
|
const state = videos.getVideoState(video)
|
||||||
if (state.exist === false) return res.status(404).send('Video not found')
|
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)
|
res.sendStatus(500)
|
||||||
}
|
}
|
||||||
|
|
||||||
videos.getVideoState(video, function (state) {
|
const state = videos.getVideoState(video)
|
||||||
if (state.exist === false) return res.status(404).send('Video not found')
|
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')
|
else if (state.owned === false) return res.status(403).send('Cannot remove video of another pod')
|
||||||
|
|
||||||
next()
|
next()
|
||||||
})
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -205,8 +205,8 @@ describe('Test multiple pods', function () {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
||||||
const video = res.body[0]
|
const video = res.body[0]
|
||||||
to_remove.push(res.body[2]._id)
|
to_remove.push(res.body[2].id)
|
||||||
to_remove.push(res.body[3]._id)
|
to_remove.push(res.body[3].id)
|
||||||
|
|
||||||
webtorrent.add(video.magnetUri, function (torrent) {
|
webtorrent.add(video.magnetUri, function (torrent) {
|
||||||
expect(torrent.files).to.exist
|
expect(torrent.files).to.exist
|
||||||
|
@ -300,11 +300,11 @@ describe('Test multiple pods', function () {
|
||||||
const videos = res.body
|
const videos = res.body
|
||||||
expect(videos).to.be.an('array')
|
expect(videos).to.be.an('array')
|
||||||
expect(videos.length).to.equal(2)
|
expect(videos.length).to.equal(2)
|
||||||
expect(videos[0]._id).not.to.equal(videos[1]._id)
|
expect(videos[0].id).not.to.equal(videos[1].id)
|
||||||
expect(videos[0]._id).not.to.equal(to_remove[0])
|
expect(videos[0].id).not.to.equal(to_remove[0])
|
||||||
expect(videos[1]._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[0].id).not.to.equal(to_remove[1])
|
||||||
expect(videos[1]._id).not.to.equal(to_remove[1])
|
expect(videos[1].id).not.to.equal(to_remove[1])
|
||||||
|
|
||||||
callback()
|
callback()
|
||||||
})
|
})
|
||||||
|
|
|
@ -68,7 +68,30 @@ describe('Test a single pod', function () {
|
||||||
expect(video.podUrl).to.equal('http://localhost:9001')
|
expect(video.podUrl).to.equal('http://localhost:9001')
|
||||||
expect(video.magnetUri).to.exist
|
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) {
|
webtorrent.add(video.magnetUri, function (torrent) {
|
||||||
expect(torrent.files).to.exist
|
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.name).to.equal('my super name')
|
||||||
expect(video.description).to.equal('my super description')
|
expect(video.description).to.equal('my super description')
|
||||||
expect(video.podUrl).to.equal('http://localhost:9001')
|
expect(video.podUrl).to.equal('http://localhost:9001')
|
||||||
expect(video.magnetUri).to.exist
|
|
||||||
|
|
||||||
done()
|
done()
|
||||||
})
|
})
|
||||||
|
|
|
@ -9,6 +9,7 @@ const request = require('supertest')
|
||||||
const testUtils = {
|
const testUtils = {
|
||||||
flushTests: flushTests,
|
flushTests: flushTests,
|
||||||
getFriendsList: getFriendsList,
|
getFriendsList: getFriendsList,
|
||||||
|
getVideo: getVideo,
|
||||||
getVideosList: getVideosList,
|
getVideosList: getVideosList,
|
||||||
makeFriends: makeFriends,
|
makeFriends: makeFriends,
|
||||||
quitFriends: quitFriends,
|
quitFriends: quitFriends,
|
||||||
|
@ -36,6 +37,17 @@ function getFriendsList (url, end) {
|
||||||
.end(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) {
|
function getVideosList (url, end) {
|
||||||
const path = '/api/v1/videos'
|
const path = '/api/v1/videos'
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue