diff --git a/translate-api/app.js b/translate-api/app.js index fbbcbae..310babc 100755 --- a/translate-api/app.js +++ b/translate-api/app.js @@ -11,12 +11,14 @@ /** * Module dependencies. */ -var express = require('express') -var bodyParser = require('body-parser') +var express = require('express'); +var bodyParser = require('body-parser'); -var db = require('./config/db') +var db = require('./config/db'); +var settings = require('./config/settings'); -var translate = require('./routes/translate') +var bundle = require('./routes/bundle'); +var translate = require('./routes/translate'); var video = require('./routes/video'); var app = express(); @@ -30,7 +32,7 @@ app.use(bodyParser.urlencoded({ extended: true })); /** * Public directory. */ -app.use('/video', express.static(process.env.VLIBRAS_VIDEO_LIBRAS)); +app.use('/video', express.static(process.env.settings.contentsPath)); /** * Allow cross origin requests. @@ -45,6 +47,7 @@ app.use(function(req, res, next) { /** * Register routes. */ +app.use('/', bundle); app.use('/translate', translate); app.use('/video', video); diff --git a/translate-api/config/settings.js b/translate-api/config/settings.js new file mode 100644 index 0000000..c64d7de --- /dev/null +++ b/translate-api/config/settings.js @@ -0,0 +1,24 @@ +/** + * Author: Wesnydy Lima Ribeiro + * Email: wesnydy@lavid.ufpb.br + */ + +'use strict'; + +/** + * Required libs. + */ +var path = require('path'); + +var config = {}; + +config.contentsPath = process.env.VLIBRAS_VIDEO_LIBRAS; +config.bundlesPath = process.env.BUNDLES_PATH; + +config.platformsList = [ 'ANDROID', 'IOS', 'WEBGL', 'STANDALONE' ]; + +config.statesList = [ 'AC', 'AL', 'AP', 'AM', 'BA', 'CE', 'DF', 'ES', 'GO', + 'MA', 'MT', 'MS', 'MG', 'PA', 'PB', 'PR', 'PE', 'PI', + 'RJ', 'RN', 'RS', 'RO', 'RR', 'SC', 'SP', 'SE', 'TO' ]; + +module.exports = config; diff --git a/translate-api/controllers/bundle.js b/translate-api/controllers/bundle.js new file mode 100644 index 0000000..9e74a38 --- /dev/null +++ b/translate-api/controllers/bundle.js @@ -0,0 +1,40 @@ +/** + * Author: Wesnydy Lima Ribeiro + * Email: wesnydy@lavid.ufpb.br + */ + +'use strict'; + +/** + * Required libs. + */ +var path = require('path') + , settings = require('../config/settings') + , error = require('../helpers/error'); + +exports.show=function(req, res, next) { + /** + * Check the required params. + */ + if (!req.params.sign || !req.params.platform) + return error.badRequest('Sign and/or platform not specified.', next); + /** + * Check for supported platforms. + */ + var upperPlatform = req.params.platform.toUpperCase(); + if (settings.platformsList.indexOf(upperPlatform) < 0) + return error.notFound('Platform not recognized.', next); + /** + * Check for supported states. + * If the state is suppressed, we use the national dictionary. + */ + var upperState = req.params.state ? req.params.state.toUpperCase() : ""; + if ((upperState !== "") && (settings.statesList.indexOf(upperState) < 0)) + return error.notFound('State not recognized.', next); + /** + * Sends the bundle if it exists in the repository. + */ + var upperSign = req.params.sign.toUpperCase(); + var bundle = path.join(settings.bundlesPath, upperPlatform, upperState, upperSign); + res.sendFile(bundle); +}; diff --git a/translate-api/package.json b/translate-api/package.json index 04f0286..582c658 100644 --- a/translate-api/package.json +++ b/translate-api/package.json @@ -1,6 +1,6 @@ { "name": "translate-container", - "version": "0.0.0", + "version": "3.1.0", "private": true, "license": "GPLv3", "authors": [ @@ -15,8 +15,9 @@ "amqplib": "~0.5.1", "bluebird": "^3.4.7", "body-parser": "~1.16.0", - "express": "~4.0.0", + "express": "^4.15.2", "mongoose": "^4.8.4", + "path": "^0.12.7", "shortid": "~2.2.6" } } diff --git a/translate-api/routes/bundle.js b/translate-api/routes/bundle.js new file mode 100644 index 0000000..3d367a7 --- /dev/null +++ b/translate-api/routes/bundle.js @@ -0,0 +1,17 @@ +/** + * Author: Wesnydy Lima Ribeiro + * Email: wesnydy@lavid.ufpb.br + */ + +var express = require('express') + , router = express.Router() + , bundlesController = require('../controllers/bundle'); + +/** + * Routes to get bundles of a specific platform. + */ +router + // .get('/signs', bundlesController.index) + .get('/:platform/:state?/:sign', bundlesController.show) + +module.exports = router; -- libgit2 0.21.2