var parameters = require('./helpers/parameters'); var properties = require('./helpers/properties'); var ep_texto = require('./endpoints/texto'); var ep_ios = require('./endpoints/ios'); var ep_video = require('./endpoints/video'); var ep_legenda = require('./endpoints/legenda'); var ep_video_legenda = require('./endpoints/video_legenda'); var ep_video_rnp = require('./endpoints/videornp'); var mongoose = require('mongoose'); require('./db/config').connect(mongoose); var express = require('express'); var path = require('path'); var util = require('util'); var app = express(); var Request = require('./db/schemas/request').init(mongoose); var db = require('./db/api'); var config = require('./config/main.js'); var logger = require('./logsystem/main.js'); var kue = require('kue'); var queue = kue.createQueue(); var unirest = require('unirest'); var ui = require('kue-ui'); var PythonShell = require('python-shell'); var options = { pythonPath: 'python', scriptPath: '/home/libras/vlibras-translate/src', args: [] }; app.use('/kue', kue.app); // app.use('/kueui', ui.app); app.use(express.static(path.join(__dirname, '/videos'))); app.use(express.bodyParser({ keepExtensions: true, uploadDir: path.join(__dirname, '/uploads') })); app.get('/', function(req, res){ res.send(200, { 'status': 'server is running!' } ); }); app.post('/testcallback', function(req, res) { console.log(req.body); res.send(200, { 'status': 'Callback OK' } ); }); app.post('/api', function(req, res) { console.log("\n\n\n============================================="); console.log("[" + new Date().toISOString() + "] Requisição do IP: " + req.ip); console.log("== Parametros: " + util.inspect(req.body)); console.log("== Body: " + JSON.stringify(req.headers)); /* Verifica se o paramêtro [servico] possui algum valor */ if (req.body.servico !== '') { /* Verifica qual é o Tipo de Serviço fornecido */ if (config.canRunOnBox(req.body.servico)) { switch(req.body.servico) { /* Tipo de Serviço: Texto */ case 'texto': ep_texto.init(req, res, Request); break; /* Tipo de Serviço: iOS */ case 'ios': ep_ios.init(req, res); break; /* Tipo de Serviço: Só o Vídeo */ case 'video': ep_video.init(req, res); break; case 'videornp': ep_video_rnp.init(req, res, Request); break; /* Tipo de Serviço: Só a Legenda */ case 'legenda': ep_legenda.init(req, res); break; /* Tipo de Serviço: Video + Legenda */ case 'video-legenda': logger.incrementService("outros", "requisicoes"); ep_video_legenda.init(req, res); break; /* Case para um Tipo de Serviço inválido */ default: res.send(500, parameters.errorMessage('Tipo do serviço inválido')); break; } // end of switch } // end of if canRunOnBox } else { res.send(500, parameters.errorMessage('Especifique o tipo do serviço')); } }); app.get('/requests', function(req, res) { db.read_all(Request, function(result) { if (result !== null) { res.send(200, result); } else { res.send(500, { 'error': 'Erro na busca.'}); } }); }); app.get('/api/requests/', function(req,res) { db.findByIds(Request, req.param("id"), function(result) { console.log(result); if (result !== null) { res.send(200, result); } else { res.send(500, { 'error': 'Erro na busca.'}); } }); }); app.get('/api/requests/:id', function(req, res) { db.findById(Request, req.param("id"), function(result) { if (result !== null) { res.send(200, result); } else { res.send(500, { 'error': 'Erro na busca.'}); } }); }); app.get('/glosa', function(req, res) { res.header("Access-Control-Allow-Origin", "*"); options.args = req.param("texto"); console.log(options.args); PythonShell.run('PortGlosa.py', options, function (err, results) { if (err) { console.log(err); res.send(400); return;} res.send(200,results[0]); }); }); // para testes apenas // app.get('/incrementaerro', function(req, res) { // // logger.incrementError("1", "detalhe do erro"); // // logger.incrementService("videos", "traducoes"); // res.send(200, "Incrementado"); // }); app.get('/limparfila', function(req, res) { // graceful shutdown process.once( 'SIGTERM', function ( sig ) { queue.shutdown( 5000, function(err) { console.log( 'Kue shutdown: ', err||'' ); process.exit( 0 ); }); }); // todos abaixos sao redundantes queue.inactive( function( err, ids ) { ids.forEach( function( id ) { kue.Job.get( id, function( err, job ) { job.remove( function(){ // console.log( 'removed ', job.id ); }); }); }); }); queue.active( function( err, ids ) { ids.forEach( function( id ) { kue.Job.get( id, function( err, job ) { job.remove( function(){ // console.log( 'removed ', job.id ); }); }); }); }); queue.complete( function( err, ids ) { ids.forEach( function( id ) { kue.Job.get( id, function( err, job ) { job.remove( function(){ // console.log( 'removed ', job.id ); }); }); }); }); queue.failed( function( err, ids ) { ids.forEach( function( id ) { kue.Job.get( id, function( err, job ) { job.remove( function(){ // console.log( 'removed ', job.id ); }); }); }); }); res.send(200, {'status' : 'A fila foi resetada com sucesso.'}); }); app.get('/dicionario', function(req, res){ res.send(200, { 'versao': '1.0' } ); }); // precisa ficar no final caso o request n bata com nenhuma rota anterior app.get('/*', function(req, res){ logger.incrementError("4", "Rota nao encontrada"); res.send(404, { 'status': 'Rota nao encontrada' } ); }); app.listen(properties.port, properties.host, function(){ console.log('Server running on ' + properties.host + ':' + properties.port); }); // var CronJob = require('cron').CronJob; // // '* * * * * *' == a cada 1 segundo // new CronJob('* 2 * * * *', function() { // unirest.post('http://localhost:5000/api') // .header('Accept', 'application/json') // .send({ "servico": "texto", "transparencia": "opaco", "texto": "texto teste" }) // .end(function (response) { // console.log(response.status); // if(response.status === 200){ // logger.updateHealth("outros", 1); // } else { // logger.updateHealth(); // } // }); // }, null, true); // no lugar do null pode ser uma funcao pra executar quando parar