mirror of https://github.com/Chocobozzz/PeerTube
Server: add nsfw attribute
parent
d07137b90b
commit
31b59b4774
|
@ -296,6 +296,7 @@ function addRemoteVideo (videoToCreateData, fromPod, finalCallback) {
|
||||||
infoHash: videoToCreateData.infoHash,
|
infoHash: videoToCreateData.infoHash,
|
||||||
category: videoToCreateData.category,
|
category: videoToCreateData.category,
|
||||||
licence: videoToCreateData.licence,
|
licence: videoToCreateData.licence,
|
||||||
|
nsfw: videoToCreateData.nsfw,
|
||||||
description: videoToCreateData.description,
|
description: videoToCreateData.description,
|
||||||
authorId: author.id,
|
authorId: author.id,
|
||||||
duration: videoToCreateData.duration,
|
duration: videoToCreateData.duration,
|
||||||
|
@ -394,6 +395,7 @@ function updateRemoteVideo (videoAttributesToUpdate, fromPod, finalCallback) {
|
||||||
videoInstance.set('name', videoAttributesToUpdate.name)
|
videoInstance.set('name', videoAttributesToUpdate.name)
|
||||||
videoInstance.set('category', videoAttributesToUpdate.category)
|
videoInstance.set('category', videoAttributesToUpdate.category)
|
||||||
videoInstance.set('licence', videoAttributesToUpdate.licence)
|
videoInstance.set('licence', videoAttributesToUpdate.licence)
|
||||||
|
videoInstance.set('nsfw', videoAttributesToUpdate.nsfw)
|
||||||
videoInstance.set('description', videoAttributesToUpdate.description)
|
videoInstance.set('description', videoAttributesToUpdate.description)
|
||||||
videoInstance.set('infoHash', videoAttributesToUpdate.infoHash)
|
videoInstance.set('infoHash', videoAttributesToUpdate.infoHash)
|
||||||
videoInstance.set('duration', videoAttributesToUpdate.duration)
|
videoInstance.set('duration', videoAttributesToUpdate.duration)
|
||||||
|
|
|
@ -313,6 +313,7 @@ function addVideo (req, res, videoFile, finalCallback) {
|
||||||
extname: path.extname(videoFile.filename),
|
extname: path.extname(videoFile.filename),
|
||||||
category: videoInfos.category,
|
category: videoInfos.category,
|
||||||
licence: videoInfos.licence,
|
licence: videoInfos.licence,
|
||||||
|
nsfw: videoInfos.nsfw,
|
||||||
description: videoInfos.description,
|
description: videoInfos.description,
|
||||||
duration: videoFile.duration,
|
duration: videoFile.duration,
|
||||||
authorId: author.id
|
authorId: author.id
|
||||||
|
@ -428,6 +429,7 @@ function updateVideo (req, res, finalCallback) {
|
||||||
if (videoInfosToUpdate.name) videoInstance.set('name', videoInfosToUpdate.name)
|
if (videoInfosToUpdate.name) videoInstance.set('name', videoInfosToUpdate.name)
|
||||||
if (videoInfosToUpdate.category) videoInstance.set('category', videoInfosToUpdate.category)
|
if (videoInfosToUpdate.category) videoInstance.set('category', videoInfosToUpdate.category)
|
||||||
if (videoInfosToUpdate.licence) videoInstance.set('licence', videoInfosToUpdate.licence)
|
if (videoInfosToUpdate.licence) videoInstance.set('licence', videoInfosToUpdate.licence)
|
||||||
|
if (videoInfosToUpdate.nsfw) videoInstance.set('nsfw', videoInfosToUpdate.nsfw)
|
||||||
if (videoInfosToUpdate.description) videoInstance.set('description', videoInfosToUpdate.description)
|
if (videoInfosToUpdate.description) videoInstance.set('description', videoInfosToUpdate.description)
|
||||||
|
|
||||||
videoInstance.save(options).asCallback(function (err) {
|
videoInstance.save(options).asCallback(function (err) {
|
||||||
|
|
|
@ -87,6 +87,7 @@ function isCommonVideoAttributesValid (video) {
|
||||||
videosValidators.isVideoDateValid(video.updatedAt) &&
|
videosValidators.isVideoDateValid(video.updatedAt) &&
|
||||||
videosValidators.isVideoCategoryValid(video.category) &&
|
videosValidators.isVideoCategoryValid(video.category) &&
|
||||||
videosValidators.isVideoLicenceValid(video.licence) &&
|
videosValidators.isVideoLicenceValid(video.licence) &&
|
||||||
|
videosValidators.isVideoNSFWValid(video.nsfw) &&
|
||||||
videosValidators.isVideoDescriptionValid(video.description) &&
|
videosValidators.isVideoDescriptionValid(video.description) &&
|
||||||
videosValidators.isVideoDurationValid(video.duration) &&
|
videosValidators.isVideoDurationValid(video.duration) &&
|
||||||
videosValidators.isVideoInfoHashValid(video.infoHash) &&
|
videosValidators.isVideoInfoHashValid(video.infoHash) &&
|
||||||
|
|
|
@ -15,6 +15,7 @@ const videosValidators = {
|
||||||
isVideoDateValid,
|
isVideoDateValid,
|
||||||
isVideoCategoryValid,
|
isVideoCategoryValid,
|
||||||
isVideoLicenceValid,
|
isVideoLicenceValid,
|
||||||
|
isVideoNSFWValid,
|
||||||
isVideoDescriptionValid,
|
isVideoDescriptionValid,
|
||||||
isVideoDurationValid,
|
isVideoDurationValid,
|
||||||
isVideoInfoHashValid,
|
isVideoInfoHashValid,
|
||||||
|
@ -50,6 +51,10 @@ function isVideoLicenceValid (value) {
|
||||||
return constants.VIDEO_LICENCES[value] !== undefined
|
return constants.VIDEO_LICENCES[value] !== undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isVideoNSFWValid (value) {
|
||||||
|
return validator.isBoolean(value)
|
||||||
|
}
|
||||||
|
|
||||||
function isVideoDescriptionValid (value) {
|
function isVideoDescriptionValid (value) {
|
||||||
return validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.DESCRIPTION)
|
return validator.isLength(value, VIDEOS_CONSTRAINTS_FIELDS.DESCRIPTION)
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ const path = require('path')
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
const LAST_MIGRATION_VERSION = 35
|
const LAST_MIGRATION_VERSION = 40
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const waterfall = require('async/waterfall')
|
||||||
|
|
||||||
|
// utils = { transaction, queryInterface, sequelize, Sequelize }
|
||||||
|
exports.up = function (utils, finalCallback) {
|
||||||
|
const q = utils.queryInterface
|
||||||
|
const Sequelize = utils.Sequelize
|
||||||
|
|
||||||
|
const data = {
|
||||||
|
type: Sequelize.BOOLEAN,
|
||||||
|
allowNull: false,
|
||||||
|
defaultValue: false
|
||||||
|
}
|
||||||
|
|
||||||
|
waterfall([
|
||||||
|
|
||||||
|
function addNSFWColumn (callback) {
|
||||||
|
q.addColumn('Videos', 'nsfw', data, { transaction: utils.transaction }).asCallback(function (err) {
|
||||||
|
return callback(err)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
function nullOnDefault (callback) {
|
||||||
|
data.defaultValue = null
|
||||||
|
|
||||||
|
q.changeColumn('Videos', 'nsfw', data, { transaction: utils.transaction }).asCallback(callback)
|
||||||
|
}
|
||||||
|
], finalCallback)
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.down = function (options, callback) {
|
||||||
|
throw new Error('Not implemented.')
|
||||||
|
}
|
|
@ -23,6 +23,7 @@ function videosAdd (req, res, next) {
|
||||||
req.checkBody('name', 'Should have a valid name').isVideoNameValid()
|
req.checkBody('name', 'Should have a valid name').isVideoNameValid()
|
||||||
req.checkBody('category', 'Should have a valid category').isVideoCategoryValid()
|
req.checkBody('category', 'Should have a valid category').isVideoCategoryValid()
|
||||||
req.checkBody('licence', 'Should have a valid licence').isVideoLicenceValid()
|
req.checkBody('licence', 'Should have a valid licence').isVideoLicenceValid()
|
||||||
|
req.checkBody('nsfw', 'Should have a valid NSFW attribute').isVideoNSFWValid()
|
||||||
req.checkBody('description', 'Should have a valid description').isVideoDescriptionValid()
|
req.checkBody('description', 'Should have a valid description').isVideoDescriptionValid()
|
||||||
req.checkBody('tags', 'Should have correct tags').optional().isVideoTagsValid()
|
req.checkBody('tags', 'Should have correct tags').optional().isVideoTagsValid()
|
||||||
|
|
||||||
|
@ -51,6 +52,7 @@ function videosUpdate (req, res, next) {
|
||||||
req.checkBody('name', 'Should have a valid name').optional().isVideoNameValid()
|
req.checkBody('name', 'Should have a valid name').optional().isVideoNameValid()
|
||||||
req.checkBody('category', 'Should have a valid category').optional().isVideoCategoryValid()
|
req.checkBody('category', 'Should have a valid category').optional().isVideoCategoryValid()
|
||||||
req.checkBody('licence', 'Should have a valid licence').optional().isVideoLicenceValid()
|
req.checkBody('licence', 'Should have a valid licence').optional().isVideoLicenceValid()
|
||||||
|
req.checkBody('nsfw', 'Should have a valid NSFW attribute').optional().isVideoNSFWValid()
|
||||||
req.checkBody('description', 'Should have a valid description').optional().isVideoDescriptionValid()
|
req.checkBody('description', 'Should have a valid description').optional().isVideoDescriptionValid()
|
||||||
req.checkBody('tags', 'Should have correct tags').optional().isVideoTagsValid()
|
req.checkBody('tags', 'Should have correct tags').optional().isVideoTagsValid()
|
||||||
|
|
||||||
|
|
|
@ -71,6 +71,16 @@ module.exports = function (sequelize, DataTypes) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
nsfw: {
|
||||||
|
type: DataTypes.BOOLEAN,
|
||||||
|
allowNull: false,
|
||||||
|
validate: {
|
||||||
|
nsfwValid: function (value) {
|
||||||
|
const res = customVideosValidators.isVideoNSFWValid(value)
|
||||||
|
if (res === false) throw new Error('Video nsfw attribute is not valid.')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
description: {
|
description: {
|
||||||
type: DataTypes.STRING,
|
type: DataTypes.STRING,
|
||||||
allowNull: false,
|
allowNull: false,
|
||||||
|
@ -395,6 +405,7 @@ function toFormatedJSON () {
|
||||||
categoryLabel,
|
categoryLabel,
|
||||||
licence: this.licence,
|
licence: this.licence,
|
||||||
licenceLabel,
|
licenceLabel,
|
||||||
|
nsfw: this.nsfw,
|
||||||
description: this.description,
|
description: this.description,
|
||||||
podHost,
|
podHost,
|
||||||
isLocal: this.isOwned(),
|
isLocal: this.isOwned(),
|
||||||
|
@ -428,6 +439,7 @@ function toAddRemoteJSON (callback) {
|
||||||
name: self.name,
|
name: self.name,
|
||||||
category: self.category,
|
category: self.category,
|
||||||
licence: self.licence,
|
licence: self.licence,
|
||||||
|
nsfw: self.nsfw,
|
||||||
description: self.description,
|
description: self.description,
|
||||||
infoHash: self.infoHash,
|
infoHash: self.infoHash,
|
||||||
remoteId: self.id,
|
remoteId: self.id,
|
||||||
|
@ -452,6 +464,7 @@ function toUpdateRemoteJSON (callback) {
|
||||||
name: this.name,
|
name: this.name,
|
||||||
category: this.category,
|
category: this.category,
|
||||||
licence: this.licence,
|
licence: this.licence,
|
||||||
|
nsfw: this.nsfw,
|
||||||
description: this.description,
|
description: this.description,
|
||||||
infoHash: this.infoHash,
|
infoHash: this.infoHash,
|
||||||
remoteId: this.id,
|
remoteId: this.id,
|
||||||
|
|
|
@ -114,6 +114,7 @@ describe('Test videos API validator', function () {
|
||||||
const data = {
|
const data = {
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 1,
|
licence: 1,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 'tag2' ]
|
tags: [ 'tag1', 'tag2' ]
|
||||||
}
|
}
|
||||||
|
@ -128,6 +129,7 @@ describe('Test videos API validator', function () {
|
||||||
name: 'My very very very very very very very very very very very very very very very very long name',
|
name: 'My very very very very very very very very very very very very very very very very long name',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 1,
|
licence: 1,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 'tag2' ]
|
tags: [ 'tag1', 'tag2' ]
|
||||||
}
|
}
|
||||||
|
@ -141,6 +143,7 @@ describe('Test videos API validator', function () {
|
||||||
const data = {
|
const data = {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
licence: 1,
|
licence: 1,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 'tag2' ]
|
tags: [ 'tag1', 'tag2' ]
|
||||||
}
|
}
|
||||||
|
@ -155,6 +158,7 @@ describe('Test videos API validator', function () {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 125,
|
category: 125,
|
||||||
licence: 1,
|
licence: 1,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 'tag2' ]
|
tags: [ 'tag1', 'tag2' ]
|
||||||
}
|
}
|
||||||
|
@ -168,6 +172,7 @@ describe('Test videos API validator', function () {
|
||||||
const data = {
|
const data = {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 5,
|
category: 5,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 'tag2' ]
|
tags: [ 'tag1', 'tag2' ]
|
||||||
}
|
}
|
||||||
|
@ -182,6 +187,36 @@ describe('Test videos API validator', function () {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 125,
|
licence: 125,
|
||||||
|
nsfw: false,
|
||||||
|
description: 'my super description',
|
||||||
|
tags: [ 'tag1', 'tag2' ]
|
||||||
|
}
|
||||||
|
const attach = {
|
||||||
|
'videofile': pathUtils.join(__dirname, '..', 'fixtures', 'video_short.webm')
|
||||||
|
}
|
||||||
|
requestsUtils.makePostUploadRequest(server.url, path, server.accessToken, data, attach, done)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Should fail without nsfw attribute', function (done) {
|
||||||
|
const data = {
|
||||||
|
name: 'my super name',
|
||||||
|
category: 5,
|
||||||
|
licence: 4,
|
||||||
|
description: 'my super description',
|
||||||
|
tags: [ 'tag1', 'tag2' ]
|
||||||
|
}
|
||||||
|
const attach = {
|
||||||
|
'videofile': pathUtils.join(__dirname, '..', 'fixtures', 'video_short.webm')
|
||||||
|
}
|
||||||
|
requestsUtils.makePostUploadRequest(server.url, path, server.accessToken, data, attach, done)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Should fail with a bad nsfw attribue', function (done) {
|
||||||
|
const data = {
|
||||||
|
name: 'my super name',
|
||||||
|
category: 5,
|
||||||
|
licence: 4,
|
||||||
|
nsfw: 2,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 'tag2' ]
|
tags: [ 'tag1', 'tag2' ]
|
||||||
}
|
}
|
||||||
|
@ -196,6 +231,7 @@ describe('Test videos API validator', function () {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 1,
|
licence: 1,
|
||||||
|
nsfw: false,
|
||||||
tags: [ 'tag1', 'tag2' ]
|
tags: [ 'tag1', 'tag2' ]
|
||||||
}
|
}
|
||||||
const attach = {
|
const attach = {
|
||||||
|
@ -209,6 +245,7 @@ describe('Test videos API validator', function () {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 1,
|
licence: 1,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description which is very very very very very very very very very very very very very very' +
|
description: 'my super description which is very very very very very very very very very very very very very very' +
|
||||||
'very very very very very very very very very very very very very very very very very very very very very' +
|
'very very very very very very very very very very very very very very very very very very very very very' +
|
||||||
'very very very very very very very very very very very very very very very long',
|
'very very very very very very very very very very very very very very very long',
|
||||||
|
@ -225,6 +262,7 @@ describe('Test videos API validator', function () {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 1,
|
licence: 1,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 'tag2', 'tag3', 'tag4' ]
|
tags: [ 'tag1', 'tag2', 'tag3', 'tag4' ]
|
||||||
}
|
}
|
||||||
|
@ -239,6 +277,7 @@ describe('Test videos API validator', function () {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 1,
|
licence: 1,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 't' ]
|
tags: [ 'tag1', 't' ]
|
||||||
}
|
}
|
||||||
|
@ -253,6 +292,7 @@ describe('Test videos API validator', function () {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 1,
|
licence: 1,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'mysupertagtoolong', 'tag1' ]
|
tags: [ 'mysupertagtoolong', 'tag1' ]
|
||||||
}
|
}
|
||||||
|
@ -267,6 +307,7 @@ describe('Test videos API validator', function () {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 1,
|
licence: 1,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 'tag2' ]
|
tags: [ 'tag1', 'tag2' ]
|
||||||
}
|
}
|
||||||
|
@ -279,6 +320,7 @@ describe('Test videos API validator', function () {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 1,
|
licence: 1,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 'tag2' ]
|
tags: [ 'tag1', 'tag2' ]
|
||||||
}
|
}
|
||||||
|
@ -293,6 +335,7 @@ describe('Test videos API validator', function () {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 1,
|
licence: 1,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 'tag2' ]
|
tags: [ 'tag1', 'tag2' ]
|
||||||
}
|
}
|
||||||
|
@ -307,6 +350,7 @@ describe('Test videos API validator', function () {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 1,
|
licence: 1,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 'tag2' ]
|
tags: [ 'tag1', 'tag2' ]
|
||||||
}
|
}
|
||||||
|
@ -345,6 +389,7 @@ describe('Test videos API validator', function () {
|
||||||
const data = {
|
const data = {
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 2,
|
licence: 2,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 'tag2' ]
|
tags: [ 'tag1', 'tag2' ]
|
||||||
}
|
}
|
||||||
|
@ -355,6 +400,7 @@ describe('Test videos API validator', function () {
|
||||||
const data = {
|
const data = {
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 2,
|
licence: 2,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 'tag2' ]
|
tags: [ 'tag1', 'tag2' ]
|
||||||
}
|
}
|
||||||
|
@ -366,6 +412,7 @@ describe('Test videos API validator', function () {
|
||||||
name: 'My very very very very very very very very very very very very very very very very long name',
|
name: 'My very very very very very very very very very very very very very very very very long name',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 2,
|
licence: 2,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 'tag2' ]
|
tags: [ 'tag1', 'tag2' ]
|
||||||
}
|
}
|
||||||
|
@ -377,6 +424,7 @@ describe('Test videos API validator', function () {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 128,
|
category: 128,
|
||||||
licence: 2,
|
licence: 2,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 'tag2' ]
|
tags: [ 'tag1', 'tag2' ]
|
||||||
}
|
}
|
||||||
|
@ -388,6 +436,19 @@ describe('Test videos API validator', function () {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 128,
|
licence: 128,
|
||||||
|
nsfw: false,
|
||||||
|
description: 'my super description',
|
||||||
|
tags: [ 'tag1', 'tag2' ]
|
||||||
|
}
|
||||||
|
requestsUtils.makePutBodyRequest(server.url, path + videoId, server.accessToken, data, done)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('Should fail with a bad nsfw attribute', function (done) {
|
||||||
|
const data = {
|
||||||
|
name: 'my super name',
|
||||||
|
category: 5,
|
||||||
|
licence: 5,
|
||||||
|
nsfw: -4,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 'tag2' ]
|
tags: [ 'tag1', 'tag2' ]
|
||||||
}
|
}
|
||||||
|
@ -399,6 +460,7 @@ describe('Test videos API validator', function () {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 2,
|
licence: 2,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description which is very very very very very very very very very very very very very very' +
|
description: 'my super description which is very very very very very very very very very very very very very very' +
|
||||||
'very very very very very very very very very very very very very very very very very very very very very' +
|
'very very very very very very very very very very very very very very very very very very very very very' +
|
||||||
'very very very very very very very very very very very very very very very long',
|
'very very very very very very very very very very very very very very very long',
|
||||||
|
@ -412,6 +474,7 @@ describe('Test videos API validator', function () {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 2,
|
licence: 2,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 'tag2', 'tag3', 'tag4' ]
|
tags: [ 'tag1', 'tag2', 'tag3', 'tag4' ]
|
||||||
}
|
}
|
||||||
|
@ -423,6 +486,7 @@ describe('Test videos API validator', function () {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 2,
|
licence: 2,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag1', 't' ]
|
tags: [ 'tag1', 't' ]
|
||||||
}
|
}
|
||||||
|
@ -434,6 +498,7 @@ describe('Test videos API validator', function () {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 2,
|
licence: 2,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'mysupertagtoolong', 'tag1' ]
|
tags: [ 'mysupertagtoolong', 'tag1' ]
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,6 +84,7 @@ describe('Test multiple pods', function () {
|
||||||
name: 'my super name for pod 1',
|
name: 'my super name for pod 1',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 4,
|
licence: 4,
|
||||||
|
nsfw: true,
|
||||||
description: 'my super description for pod 1',
|
description: 'my super description for pod 1',
|
||||||
tags: [ 'tag1p1', 'tag2p1' ],
|
tags: [ 'tag1p1', 'tag2p1' ],
|
||||||
fixture: 'video_short1.webm'
|
fixture: 'video_short1.webm'
|
||||||
|
@ -112,6 +113,7 @@ describe('Test multiple pods', function () {
|
||||||
expect(video.categoryLabel).to.equal('Sports')
|
expect(video.categoryLabel).to.equal('Sports')
|
||||||
expect(video.licence).to.equal(4)
|
expect(video.licence).to.equal(4)
|
||||||
expect(video.licenceLabel).to.equal('Attribution - Non Commercial')
|
expect(video.licenceLabel).to.equal('Attribution - Non Commercial')
|
||||||
|
expect(video.nsfw).to.be.truthy
|
||||||
expect(video.description).to.equal('my super description for pod 1')
|
expect(video.description).to.equal('my super description for pod 1')
|
||||||
expect(video.podHost).to.equal('localhost:9001')
|
expect(video.podHost).to.equal('localhost:9001')
|
||||||
expect(video.magnetUri).to.exist
|
expect(video.magnetUri).to.exist
|
||||||
|
@ -155,6 +157,7 @@ describe('Test multiple pods', function () {
|
||||||
name: 'my super name for pod 2',
|
name: 'my super name for pod 2',
|
||||||
category: 4,
|
category: 4,
|
||||||
licence: 3,
|
licence: 3,
|
||||||
|
nsfw: true,
|
||||||
description: 'my super description for pod 2',
|
description: 'my super description for pod 2',
|
||||||
tags: [ 'tag1p2', 'tag2p2', 'tag3p2' ],
|
tags: [ 'tag1p2', 'tag2p2', 'tag3p2' ],
|
||||||
fixture: 'video_short2.webm'
|
fixture: 'video_short2.webm'
|
||||||
|
@ -183,6 +186,7 @@ describe('Test multiple pods', function () {
|
||||||
expect(video.categoryLabel).to.equal('Art')
|
expect(video.categoryLabel).to.equal('Art')
|
||||||
expect(video.licence).to.equal(3)
|
expect(video.licence).to.equal(3)
|
||||||
expect(video.licenceLabel).to.equal('Attribution - No Derivatives')
|
expect(video.licenceLabel).to.equal('Attribution - No Derivatives')
|
||||||
|
expect(video.nsfw).to.be.falsy
|
||||||
expect(video.description).to.equal('my super description for pod 2')
|
expect(video.description).to.equal('my super description for pod 2')
|
||||||
expect(video.podHost).to.equal('localhost:9002')
|
expect(video.podHost).to.equal('localhost:9002')
|
||||||
expect(video.magnetUri).to.exist
|
expect(video.magnetUri).to.exist
|
||||||
|
@ -226,6 +230,7 @@ describe('Test multiple pods', function () {
|
||||||
name: 'my super name for pod 3',
|
name: 'my super name for pod 3',
|
||||||
category: 6,
|
category: 6,
|
||||||
licence: 5,
|
licence: 5,
|
||||||
|
nsfw: true,
|
||||||
description: 'my super description for pod 3',
|
description: 'my super description for pod 3',
|
||||||
tags: [ 'tag1p3' ],
|
tags: [ 'tag1p3' ],
|
||||||
fixture: 'video_short3.webm'
|
fixture: 'video_short3.webm'
|
||||||
|
@ -237,6 +242,7 @@ describe('Test multiple pods', function () {
|
||||||
name: 'my super name for pod 3-2',
|
name: 'my super name for pod 3-2',
|
||||||
category: 7,
|
category: 7,
|
||||||
licence: 6,
|
licence: 6,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description for pod 3-2',
|
description: 'my super description for pod 3-2',
|
||||||
tags: [ 'tag2p3', 'tag3p3', 'tag4p3' ],
|
tags: [ 'tag2p3', 'tag3p3', 'tag4p3' ],
|
||||||
fixture: 'video_short.webm'
|
fixture: 'video_short.webm'
|
||||||
|
@ -275,6 +281,7 @@ describe('Test multiple pods', function () {
|
||||||
expect(video1.categoryLabel).to.equal('Travels')
|
expect(video1.categoryLabel).to.equal('Travels')
|
||||||
expect(video1.licence).to.equal(5)
|
expect(video1.licence).to.equal(5)
|
||||||
expect(video1.licenceLabel).to.equal('Attribution - Non Commercial - Share Alike')
|
expect(video1.licenceLabel).to.equal('Attribution - Non Commercial - Share Alike')
|
||||||
|
expect(video1.nsfw).to.be.truthy
|
||||||
expect(video1.description).to.equal('my super description for pod 3')
|
expect(video1.description).to.equal('my super description for pod 3')
|
||||||
expect(video1.podHost).to.equal('localhost:9003')
|
expect(video1.podHost).to.equal('localhost:9003')
|
||||||
expect(video1.magnetUri).to.exist
|
expect(video1.magnetUri).to.exist
|
||||||
|
@ -289,6 +296,7 @@ describe('Test multiple pods', function () {
|
||||||
expect(video2.categoryLabel).to.equal('Gaming')
|
expect(video2.categoryLabel).to.equal('Gaming')
|
||||||
expect(video2.licence).to.equal(6)
|
expect(video2.licence).to.equal(6)
|
||||||
expect(video2.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
|
expect(video2.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
|
||||||
|
expect(video2.nsfw).to.be.falsy
|
||||||
expect(video2.description).to.equal('my super description for pod 3-2')
|
expect(video2.description).to.equal('my super description for pod 3-2')
|
||||||
expect(video2.podHost).to.equal('localhost:9003')
|
expect(video2.podHost).to.equal('localhost:9003')
|
||||||
expect(video2.magnetUri).to.exist
|
expect(video2.magnetUri).to.exist
|
||||||
|
@ -638,6 +646,7 @@ describe('Test multiple pods', function () {
|
||||||
name: 'my super video updated',
|
name: 'my super video updated',
|
||||||
category: 10,
|
category: 10,
|
||||||
licence: 7,
|
licence: 7,
|
||||||
|
nsfw: true,
|
||||||
description: 'my super description updated',
|
description: 'my super description updated',
|
||||||
tags: [ 'tagup1', 'tagup2' ]
|
tags: [ 'tagup1', 'tagup2' ]
|
||||||
}
|
}
|
||||||
|
@ -668,6 +677,7 @@ describe('Test multiple pods', function () {
|
||||||
expect(videoUpdated.categoryLabel).to.equal('Entertainment')
|
expect(videoUpdated.categoryLabel).to.equal('Entertainment')
|
||||||
expect(videoUpdated.licence).to.equal(7)
|
expect(videoUpdated.licence).to.equal(7)
|
||||||
expect(videoUpdated.licenceLabel).to.equal('Public Domain Dedication')
|
expect(videoUpdated.licenceLabel).to.equal('Public Domain Dedication')
|
||||||
|
expect(videoUpdated.nsfw).to.be.truthy
|
||||||
expect(videoUpdated.description).to.equal('my super description updated')
|
expect(videoUpdated.description).to.equal('my super description updated')
|
||||||
expect(videoUpdated.tags).to.deep.equal([ 'tagup1', 'tagup2' ])
|
expect(videoUpdated.tags).to.deep.equal([ 'tagup1', 'tagup2' ])
|
||||||
expect(miscsUtils.dateIsValid(videoUpdated.updatedAt, 20000)).to.be.true
|
expect(miscsUtils.dateIsValid(videoUpdated.updatedAt, 20000)).to.be.true
|
||||||
|
|
|
@ -86,6 +86,7 @@ describe('Test a single pod', function () {
|
||||||
const videoAttributes = {
|
const videoAttributes = {
|
||||||
name: 'my super name',
|
name: 'my super name',
|
||||||
category: 2,
|
category: 2,
|
||||||
|
nsfw: true,
|
||||||
licence: 6,
|
licence: 6,
|
||||||
tags: [ 'tag1', 'tag2', 'tag3' ]
|
tags: [ 'tag1', 'tag2', 'tag3' ]
|
||||||
}
|
}
|
||||||
|
@ -109,6 +110,7 @@ describe('Test a single pod', function () {
|
||||||
expect(video.categoryLabel).to.equal('Films')
|
expect(video.categoryLabel).to.equal('Films')
|
||||||
expect(video.licence).to.equal(6)
|
expect(video.licence).to.equal(6)
|
||||||
expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
|
expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
|
||||||
|
expect(video.nsfw).to.be.truthy
|
||||||
expect(video.description).to.equal('my super description')
|
expect(video.description).to.equal('my super description')
|
||||||
expect(video.podHost).to.equal('localhost:9001')
|
expect(video.podHost).to.equal('localhost:9001')
|
||||||
expect(video.magnetUri).to.exist
|
expect(video.magnetUri).to.exist
|
||||||
|
@ -148,6 +150,7 @@ describe('Test a single pod', function () {
|
||||||
expect(video.categoryLabel).to.equal('Films')
|
expect(video.categoryLabel).to.equal('Films')
|
||||||
expect(video.licence).to.equal(6)
|
expect(video.licence).to.equal(6)
|
||||||
expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
|
expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
|
||||||
|
expect(video.nsfw).to.be.truthy
|
||||||
expect(video.description).to.equal('my super description')
|
expect(video.description).to.equal('my super description')
|
||||||
expect(video.podHost).to.equal('localhost:9001')
|
expect(video.podHost).to.equal('localhost:9001')
|
||||||
expect(video.magnetUri).to.exist
|
expect(video.magnetUri).to.exist
|
||||||
|
@ -191,6 +194,7 @@ describe('Test a single pod', function () {
|
||||||
expect(video.categoryLabel).to.equal('Films')
|
expect(video.categoryLabel).to.equal('Films')
|
||||||
expect(video.licence).to.equal(6)
|
expect(video.licence).to.equal(6)
|
||||||
expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
|
expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
|
||||||
|
expect(video.nsfw).to.be.truthy
|
||||||
expect(video.description).to.equal('my super description')
|
expect(video.description).to.equal('my super description')
|
||||||
expect(video.podHost).to.equal('localhost:9001')
|
expect(video.podHost).to.equal('localhost:9001')
|
||||||
expect(video.author).to.equal('root')
|
expect(video.author).to.equal('root')
|
||||||
|
@ -250,6 +254,7 @@ describe('Test a single pod', function () {
|
||||||
expect(video.categoryLabel).to.equal('Films')
|
expect(video.categoryLabel).to.equal('Films')
|
||||||
expect(video.licence).to.equal(6)
|
expect(video.licence).to.equal(6)
|
||||||
expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
|
expect(video.licenceLabel).to.equal('Attribution - Non Commercial - No Derivatives')
|
||||||
|
expect(video.nsfw).to.be.truthy
|
||||||
expect(video.description).to.equal('my super description')
|
expect(video.description).to.equal('my super description')
|
||||||
expect(video.podHost).to.equal('localhost:9001')
|
expect(video.podHost).to.equal('localhost:9001')
|
||||||
expect(video.author).to.equal('root')
|
expect(video.author).to.equal('root')
|
||||||
|
@ -347,6 +352,7 @@ describe('Test a single pod', function () {
|
||||||
description: video + ' description',
|
description: video + ' description',
|
||||||
category: 2,
|
category: 2,
|
||||||
licence: 1,
|
licence: 1,
|
||||||
|
nsfw: true,
|
||||||
tags: [ 'tag1', 'tag2', 'tag3' ],
|
tags: [ 'tag1', 'tag2', 'tag3' ],
|
||||||
fixture: video
|
fixture: video
|
||||||
}
|
}
|
||||||
|
@ -572,6 +578,7 @@ describe('Test a single pod', function () {
|
||||||
name: 'my super video updated',
|
name: 'my super video updated',
|
||||||
category: 4,
|
category: 4,
|
||||||
licence: 2,
|
licence: 2,
|
||||||
|
nsfw: false,
|
||||||
description: 'my super description updated',
|
description: 'my super description updated',
|
||||||
tags: [ 'tagup1', 'tagup2' ]
|
tags: [ 'tagup1', 'tagup2' ]
|
||||||
}
|
}
|
||||||
|
@ -591,6 +598,7 @@ describe('Test a single pod', function () {
|
||||||
expect(video.categoryLabel).to.equal('Art')
|
expect(video.categoryLabel).to.equal('Art')
|
||||||
expect(video.licence).to.equal(2)
|
expect(video.licence).to.equal(2)
|
||||||
expect(video.licenceLabel).to.equal('Attribution - Share Alike')
|
expect(video.licenceLabel).to.equal('Attribution - Share Alike')
|
||||||
|
expect(video.nsfw).to.be.truthy
|
||||||
expect(video.description).to.equal('my super description updated')
|
expect(video.description).to.equal('my super description updated')
|
||||||
expect(video.podHost).to.equal('localhost:9001')
|
expect(video.podHost).to.equal('localhost:9001')
|
||||||
expect(video.author).to.equal('root')
|
expect(video.author).to.equal('root')
|
||||||
|
@ -632,6 +640,7 @@ describe('Test a single pod', function () {
|
||||||
expect(video.categoryLabel).to.equal('Art')
|
expect(video.categoryLabel).to.equal('Art')
|
||||||
expect(video.licence).to.equal(2)
|
expect(video.licence).to.equal(2)
|
||||||
expect(video.licenceLabel).to.equal('Attribution - Share Alike')
|
expect(video.licenceLabel).to.equal('Attribution - Share Alike')
|
||||||
|
expect(video.nsfw).to.be.truthy
|
||||||
expect(video.description).to.equal('my super description updated')
|
expect(video.description).to.equal('my super description updated')
|
||||||
expect(video.podHost).to.equal('localhost:9001')
|
expect(video.podHost).to.equal('localhost:9001')
|
||||||
expect(video.author).to.equal('root')
|
expect(video.author).to.equal('root')
|
||||||
|
@ -663,6 +672,7 @@ describe('Test a single pod', function () {
|
||||||
expect(video.categoryLabel).to.equal('Art')
|
expect(video.categoryLabel).to.equal('Art')
|
||||||
expect(video.licence).to.equal(2)
|
expect(video.licence).to.equal(2)
|
||||||
expect(video.licenceLabel).to.equal('Attribution - Share Alike')
|
expect(video.licenceLabel).to.equal('Attribution - Share Alike')
|
||||||
|
expect(video.nsfw).to.be.truthy
|
||||||
expect(video.description).to.equal('hello everybody')
|
expect(video.description).to.equal('hello everybody')
|
||||||
expect(video.podHost).to.equal('localhost:9001')
|
expect(video.podHost).to.equal('localhost:9001')
|
||||||
expect(video.author).to.equal('root')
|
expect(video.author).to.equal('root')
|
||||||
|
|
|
@ -205,6 +205,7 @@ function upload (servers, numServer, callback) {
|
||||||
const videoAttributes = {
|
const videoAttributes = {
|
||||||
name: Date.now() + ' name',
|
name: Date.now() + ' name',
|
||||||
category: 4,
|
category: 4,
|
||||||
|
nsfw: false,
|
||||||
licence: 2,
|
licence: 2,
|
||||||
description: Date.now() + ' description',
|
description: Date.now() + ' description',
|
||||||
tags: [ Date.now().toString().substring(0, 5) + 't1', Date.now().toString().substring(0, 5) + 't2' ],
|
tags: [ Date.now().toString().substring(0, 5) + 't1', Date.now().toString().substring(0, 5) + 't2' ],
|
||||||
|
|
|
@ -9,6 +9,7 @@ program
|
||||||
.option('-u, --url <url>', 'Server url')
|
.option('-u, --url <url>', 'Server url')
|
||||||
.option('-a, --access-token <token>', 'Access token')
|
.option('-a, --access-token <token>', 'Access token')
|
||||||
.option('-n, --name <name>', 'Video name')
|
.option('-n, --name <name>', 'Video name')
|
||||||
|
.option('-x, --nsfw', 'Video is Not Safe For Work')
|
||||||
.option('-c, --category <category number>', 'Category number')
|
.option('-c, --category <category number>', 'Category number')
|
||||||
.option('-l, --licence <licence number>', 'Licence number')
|
.option('-l, --licence <licence number>', 'Licence number')
|
||||||
.option('-d, --description <description>', 'Video description')
|
.option('-d, --description <description>', 'Video description')
|
||||||
|
@ -22,6 +23,7 @@ if (
|
||||||
!program.name ||
|
!program.name ||
|
||||||
!program.category ||
|
!program.category ||
|
||||||
!program.licence ||
|
!program.licence ||
|
||||||
|
!program.nsfw ||
|
||||||
!program.description ||
|
!program.description ||
|
||||||
!program.tags ||
|
!program.tags ||
|
||||||
!Array.isArray(program.tags) ||
|
!Array.isArray(program.tags) ||
|
||||||
|
@ -40,6 +42,7 @@ fs.access(program.file, fs.F_OK, function (err) {
|
||||||
program.name,
|
program.name,
|
||||||
program.category,
|
program.category,
|
||||||
program.licence,
|
program.licence,
|
||||||
|
program.nsfw,
|
||||||
program.description,
|
program.description,
|
||||||
program.tags,
|
program.tags,
|
||||||
program.file
|
program.file
|
||||||
|
@ -52,13 +55,14 @@ function list (val) {
|
||||||
return val.split(',')
|
return val.split(',')
|
||||||
}
|
}
|
||||||
|
|
||||||
function upload (url, accessToken, name, category, licence, description, tags, fixture) {
|
function upload (url, accessToken, name, category, licence, nsfw, description, tags, fixture) {
|
||||||
console.log('Uploading %s video...', program.name)
|
console.log('Uploading %s video...', program.name)
|
||||||
|
|
||||||
const videoAttributes = {
|
const videoAttributes = {
|
||||||
name,
|
name,
|
||||||
category,
|
category,
|
||||||
licence,
|
licence,
|
||||||
|
nsfw,
|
||||||
description,
|
description,
|
||||||
tags,
|
tags,
|
||||||
fixture
|
fixture
|
||||||
|
|
|
@ -218,6 +218,7 @@ function uploadVideo (url, accessToken, videoAttributesArg, specialStatus, end)
|
||||||
name: 'my super video',
|
name: 'my super video',
|
||||||
category: 5,
|
category: 5,
|
||||||
licence: 4,
|
licence: 4,
|
||||||
|
nsfw: true,
|
||||||
description: 'my super description',
|
description: 'my super description',
|
||||||
tags: [ 'tag' ],
|
tags: [ 'tag' ],
|
||||||
fixture: 'video_short.webm'
|
fixture: 'video_short.webm'
|
||||||
|
@ -231,6 +232,7 @@ function uploadVideo (url, accessToken, videoAttributesArg, specialStatus, end)
|
||||||
.field('name', attributes.name)
|
.field('name', attributes.name)
|
||||||
.field('category', attributes.category)
|
.field('category', attributes.category)
|
||||||
.field('licence', attributes.licence)
|
.field('licence', attributes.licence)
|
||||||
|
.field('nsfw', attributes.nsfw)
|
||||||
.field('description', attributes.description)
|
.field('description', attributes.description)
|
||||||
|
|
||||||
for (let i = 0; i < attributes.tags.length; i++) {
|
for (let i = 0; i < attributes.tags.length; i++) {
|
||||||
|
@ -265,6 +267,7 @@ function updateVideo (url, accessToken, id, attributes, specialStatus, end) {
|
||||||
if (attributes.name) req.field('name', attributes.name)
|
if (attributes.name) req.field('name', attributes.name)
|
||||||
if (attributes.category) req.field('category', attributes.category)
|
if (attributes.category) req.field('category', attributes.category)
|
||||||
if (attributes.licence) req.field('licence', attributes.licence)
|
if (attributes.licence) req.field('licence', attributes.licence)
|
||||||
|
if (attributes.nsfw) req.field('nsfw', attributes.nsfw)
|
||||||
if (attributes.description) req.field('description', attributes.description)
|
if (attributes.description) req.field('description', attributes.description)
|
||||||
|
|
||||||
if (attributes.tags) {
|
if (attributes.tags) {
|
||||||
|
|
Loading…
Reference in New Issue