ng-server
Version:
A NodeJs server for Angular 2 applications
82 lines (63 loc) • 2.23 kB
JavaScript
/*eslint-env node */
var zlib = require('zlib');
var fs = require('fs');
var MimeType = require('./mime-types');
// SEND 404 ERROR MESSAGE
var sendErr404 = function (res, msg) {
var jsonMsg = '{ code: 404, message: "' + (msg || 'File not found.') + '" }';
res.setHeader('Content-Type', MimeType['.json']);
res.status(404);
res.send(jsonMsg);
};
exports.sendErr404 = sendErr404;
// SEND 403 ERROR MESSAGE
var sendErr403 = function (res, msg) {
var jsonMsg = '{ code: 403, message: "' + (msg || 'Prohibited.') + '" }';
res.setHeader('Content-Type', MimeType['.json']);
res.status(403);
res.send(jsonMsg);
};
exports.sendErr403 = sendErr403;
// SEND 500 ERROR MESSAGE
var sendErr500 = function (res, msg) {
var jsonMsg = '{ code: 500, message: "' + (msg || 'Internal error.') + '" }';
res.setHeader('Content-Type', MimeType['.json']);
res.status(500);
res.send(jsonMsg);
};
exports.sendErr500 = sendErr500;
// READ A FILE OR SEND A ERROR MSG
exports.readFile = function (res, file, callback) {
fs.access(file, function (err) {
if (err) sendErr404(res, err);
fs.readFile(file, function (err, data) {
if (err) sendErr500(res, err);
callback(data);
});
});
};
// READ A FILE OR MOVE NEXT ON 404
exports.readFileOrMoveNext = function (res, next, file, callback) {
fs.access(file, function (err) {
if (err) {
next();
return;
}
fs.readFile(file, function (err, data) {
if (err) sendErr500(res, err);
callback(data);
});
});
};
// COMPRESS FILES
var testToCompress = /\.(html|css|js)$/;
exports.testToCompress = testToCompress;
exports.compressFile = function (data, callback) {
zlib.gzip(data, callback);
};
// BUILD RESPONSE HEADERS
exports.buildResponseHeaders = function (res, context, file) {
res.setHeader('Content-Type', MimeType.get(srcUrl));
res.setHeader('Access-Control-Allow-Origin', context[req.$path].cors);
res.setHeader('Content-Encoding', 'gzip');
}