<div *ngFor="#video of videos" class="video">
<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 *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 class="video_description">
export interface Video {
- _id: string;
+ id: string;
name: string;
description: string;
magnetUri: string;
+ podUrl: string;
+ isLocal: boolean;
}
}
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))
})
}
Videos.list(function (err, videos_list) {
if (err) return next(err)
- res.json(videos_list)
+ res.json(getFormatedVideos(videos_list))
})
}
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 {
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) {
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()
})
})
}
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()
})
})
}
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
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()
})
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
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()
})
const testUtils = {
flushTests: flushTests,
getFriendsList: getFriendsList,
+ getVideo: getVideo,
getVideosList: getVideosList,
makeFriends: makeFriends,
quitFriends: quitFriends,
.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'