From 52773ef6e841b5efd0433be3c130887eaa02e397 Mon Sep 17 00:00:00 2001 From: Wesnydy Ribeiro Date: Fri, 24 Feb 2017 11:22:21 -0300 Subject: [PATCH] Assync video generation implementation --- translate-api/controllers/video.js | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 4 deletions(-) diff --git a/translate-api/controllers/video.js b/translate-api/controllers/video.js index e42240f..7e71c1e 100644 --- a/translate-api/controllers/video.js +++ b/translate-api/controllers/video.js @@ -9,16 +9,65 @@ * Required libs. */ var shortid = require('shortid') + , Video = require('../models/video') , amqp = require('../helpers/amqpManager'); -exports.createVideo = function(req, res) { +exports.create = function(req, res) { if (!req.body.gloss) return console.log('Gloss key missing'); var id = shortid.generate(); var gloss = req.body.gloss; - amqp.sendToQueue(gloss, id, 'glosses', false, res); - amqp.sendToQueue(gloss, id, 'logs', true, res); - amqp.receiveFromQueue(id, 'videos', false, res); + var video = new Video({ + status: 'processing' + }); + + new Promise(function (resolve) { + video.save(function(err) { + if (err) + return console.error(err); + res.json({ id: video._id }); + resolve(gloss); + }); + }) + .then(function(gloss) { + return new Promise(function(resolve) { + amqp.sendToQueue(gloss, id, 'glosses', false, res, function(err) { + if (err) + return console.error(err); + amqp.receiveFromQueue(id, 'videos', false, res, function(err, message) { + if (err) + return console.error(err); + resolve(message); + }); + }); + }) + .then(function(message) { + var body = JSON.parse(message); + Video.findOneAndUpdate( {_id: video._id}, { + $set:{ + file: body.file, + size: body.size, + status: body.status + } + }, {new: true}, function(err, content) { + if (err) + return console.log(err); + }); + }); + }); +}; + +exports.status = function(req, res) { + // Receive param id + var contentID = req.params.id; + // Find content by id on MongoDB + return Video.findById(contentID, function (err, video) { + // returns error when can not find content + if (err) + res.status(404).send('Not Found'); + else + res.json( { 'status': video.status, 'file': video.file, 'size': video.size } ); + }); }; -- libgit2 0.21.2