lazo-next
Version:
A client-server web framework built on Node.js that allows front-end developers to easily create a 100% SEO compliant, component MVC structured web application with an optimized first page load.
50 lines (44 loc) • 1.86 kB
JavaScript
define(['hapi'], function (Hapi) {
'use strict';
return function (req, reply) {
var payload = req.payload;
var componentName = req.params.compName;
var callback = payload ? payload.callback : null;
var fn_name = req.params.action || 'upload';
var _path = (componentName ? 'components/' + componentName : 'app') + '/server/utilActions';
LAZO.require([_path], function (util) {
var fn = util[fn_name];
if (fn) {
fn(req, {
success: function (ret) {
var resp = [];
if (callback) {
resp.push("<html><head><script>window.parent.");
resp.push(callback);
resp.push('(');
}
resp.push(JSON.stringify(ret));
if (callback) {
resp.push(');');
resp.push("</script></head><body></body></html>");
}
reply(resp.join(''));
},
error: function (ret, options) {
var error = Hapi.error.internal(ret);
if (options && options.statusCode) {
error.response.code = options.statusCode;
}
reply(error);
},
done: function () {
LAZO.logger.debug('[server.handlers.stream] Handled by application...', _path);
}
});
}
}, function (err) {
LAZO.logger.error('[server.handlers.stream] Error loading "%s" module.', _path, err);
reply(err);
});
};
});