| 123456789101112131415161718192021222324252627282930313233343536 |
- var R = require('ramda');
- var LANGS = [ 'ES', 'EN' ];
- var DEFAULT_LANG = 'ES';
- function selectLang(lang) {
- return function(x) {
- if(R.is(String, x)) {
- return x;
- } else {
- if (R.isNil(R.prop(lang, x))) {
- return x;
- } else {
- var x_ = x.toObject();
- x_ = R.merge(x_, R.prop(lang, x_));
- return R.omit(LANGS, x_);
- }
- }
- }
- }
- module.exports = function (fn) {
- return function (req, res, next) {
- var projection = req.headers.lang ? req.headers.lang : DEFAULT_LANG;
- return fn(req, res, next).then(function (xs) {
- var result = R.is(Array, xs) ? xs.map(selectLang(projection)) : selectLang(projection)(xs);
- res.json(result);
- }, function (error) {
- console.error('API: ', error)
- res.status(500).json({error: error});
- })
- }
- }
-
|