UNPKG

ng-server

Version:

A NodeJs server for Angular 2 applications

82 lines (63 loc) 2.23 kB
/*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'); }