|
@@ -0,0 +1,24 @@
|
|
|
|
|
+var R = require('ramda');
|
|
|
|
|
+var LANGS = [ 'ES', 'EN' ];
|
|
|
|
|
+var DEFAULT_LANG = 'ES';
|
|
|
|
|
+
|
|
|
|
|
+function selectLang(lang) {
|
|
|
|
|
+ return function(x) {
|
|
|
|
|
+ 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.send(result);
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|