From: Chocobozzz <florian.bigard@gmail.com>
Date: Fri, 13 May 2016 18:42:11 +0000 (+0200)
Subject: Add createdDate to videos
X-Git-Tag: v0.0.1-alpha~929
X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=bb10240ee15d31a1cc17c0e3d748dde817e7d0cb;p=oweals%2Fpeertube.git

Add createdDate to videos
---

diff --git a/server/controllers/api/v1/videos.js b/server/controllers/api/v1/videos.js
index 0e058836e..5bdfdbf58 100644
--- a/server/controllers/api/v1/videos.js
+++ b/server/controllers/api/v1/videos.js
@@ -111,13 +111,15 @@ function addVideo (req, res, next) {
           thumbnail: thumbnailName
         }
 
-        Videos.add(videoData, function (err) {
+        Videos.add(videoData, function (err, insertedVideo) {
           if (err) {
             // TODO unseed the video
             logger.error('Cannot insert this video in the database.')
             return next(err)
           }
 
+          videoData.createdDate = insertedVideo.createdDate
+
           fs.readFile(thumbnailsDir + thumbnailName, function (err, data) {
             if (err) {
               // TODO: remove video?
@@ -205,7 +207,8 @@ function getFormatedVideo (videoObj) {
     magnetUri: videoObj.magnetUri,
     author: videoObj.author,
     duration: videoObj.duration,
-    thumbnailPath: constants.THUMBNAILS_STATIC_PATH + '/' + videoObj.thumbnail
+    thumbnailPath: constants.THUMBNAILS_STATIC_PATH + '/' + videoObj.thumbnail,
+    createdDate: videoObj.createdDate
   }
 
   return formatedVideo
diff --git a/server/helpers/customValidators.js b/server/helpers/customValidators.js
index 0fbabab52..a8fc6942d 100644
--- a/server/helpers/customValidators.js
+++ b/server/helpers/customValidators.js
@@ -14,7 +14,8 @@ function eachIsRemoteVideosAddValid (values) {
       validator.isLength(val.description, 1, 50) &&
       validator.isLength(val.magnetUri, 10) &&
       validator.isURL(val.podUrl) &&
-      !isNaN(val.duration)
+      !isNaN(val.duration) &&
+      validator.isDate(val.createdDate)
   })
 }
 
diff --git a/server/models/videos.js b/server/models/videos.js
index aa9ed687d..250ad3952 100644
--- a/server/models/videos.js
+++ b/server/models/videos.js
@@ -19,7 +19,11 @@ const videosSchema = mongoose.Schema({
   podUrl: String,
   author: String,
   duration: Number,
-  thumbnail: String
+  thumbnail: String,
+  createdDate: {
+    type: Date,
+    default: Date.now
+  }
 })
 const VideosDB = mongoose.model('videos', videosSchema)
 
@@ -46,13 +50,13 @@ function add (video, callback) {
   const params = video
   params.podUrl = http + '://' + host + ':' + port
 
-  VideosDB.create(params, function (err, video) {
+  VideosDB.create(params, function (err, insertedVideo) {
     if (err) {
       logger.error('Cannot insert this video into database.')
       return callback(err)
     }
 
-    callback(null)
+    callback(null, insertedVideo)
   })
 }
 
diff --git a/server/tests/api/multiplePods.js b/server/tests/api/multiplePods.js
index 51e7fb3d1..c31c18b02 100644
--- a/server/tests/api/multiplePods.js
+++ b/server/tests/api/multiplePods.js
@@ -98,6 +98,7 @@ describe('Test multiple pods', function () {
               expect(video.podUrl).to.equal('http://localhost:9001')
               expect(video.magnetUri).to.exist
               expect(video.duration).to.equal(10)
+              expect(utils.dateIsValid(video.createdDate)).to.be.true
 
               if (server.url !== 'http://localhost:9001') {
                 expect(video.isLocal).to.be.false
@@ -153,6 +154,7 @@ describe('Test multiple pods', function () {
               expect(video.podUrl).to.equal('http://localhost:9002')
               expect(video.magnetUri).to.exist
               expect(video.duration).to.equal(5)
+              expect(utils.dateIsValid(video.createdDate)).to.be.true
 
               if (server.url !== 'http://localhost:9002') {
                 expect(video.isLocal).to.be.false
@@ -221,12 +223,14 @@ describe('Test multiple pods', function () {
               expect(video1.podUrl).to.equal('http://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.magnetUri).to.exist
               expect(video2.duration).to.equal(5)
+              expect(utils.dateIsValid(video2.createdDate)).to.be.true
 
               if (server.url !== 'http://localhost:9003') {
                 expect(video1.isLocal).to.be.false
diff --git a/server/tests/api/singlePod.js b/server/tests/api/singlePod.js
index d377bdf45..72002b631 100644
--- a/server/tests/api/singlePod.js
+++ b/server/tests/api/singlePod.js
@@ -76,6 +76,7 @@ describe('Test a single pod', function () {
       expect(video.magnetUri).to.exist
       expect(video.author).to.equal('root')
       expect(video.isLocal).to.be.true
+      expect(utils.dateIsValid(video.createdDate)).to.be.true
 
       utils.testImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) {
         if (err) throw err
@@ -109,6 +110,7 @@ describe('Test a single pod', function () {
       expect(video.magnetUri).to.exist
       expect(video.author).to.equal('root')
       expect(video.isLocal).to.be.true
+      expect(utils.dateIsValid(video.createdDate)).to.be.true
 
       utils.testImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) {
         if (err) throw err
@@ -138,6 +140,7 @@ describe('Test a single pod', function () {
       expect(video.podUrl).to.equal('http://localhost:9001')
       expect(video.author).to.equal('root')
       expect(video.isLocal).to.be.true
+      expect(utils.dateIsValid(video.createdDate)).to.be.true
 
       utils.testImage(server.url, 'video_short.webm', video.thumbnailPath, function (err, test) {
         if (err) throw err
diff --git a/server/tests/api/utils.js b/server/tests/api/utils.js
index f0b1c3653..d505cb5d9 100644
--- a/server/tests/api/utils.js
+++ b/server/tests/api/utils.js
@@ -8,6 +8,7 @@ const pathUtils = require('path')
 const request = require('supertest')
 
 const testUtils = {
+  dateIsValid: dateIsValid,
   flushTests: flushTests,
   getFriendsList: getFriendsList,
   getVideo: getVideo,
@@ -28,6 +29,16 @@ const testUtils = {
 
 // ---------------------- Export functions --------------------
 
+function dateIsValid (dateString) {
+  const dateToCheck = new Date(dateString)
+  const now = new Date()
+
+  // Check if the interval is more than 2 minutes
+  if (now - dateToCheck > 120000) return false
+
+  return true
+}
+
 function flushTests (callback) {
   exec('npm run clean:server:test', callback)
 }