Commit b173cdd1 authored by John Crepezzi's avatar John Crepezzi
Browse files

preparse static elements rather than fs'ing them

parent 0fe0306c
Loading
Loading
Loading
Loading
+18 −17
Original line number Diff line number Diff line
@@ -8,6 +8,12 @@ var winston = require('winston');
var StaticHandler = function(path) {
  this.basePath = path;
  this.defaultPath = '/index.html';
  // Grab the list of available files - and move into hash for quick lookup
  var available = fs.readdirSync(this.basePath);
  this.availablePaths = {};
  for (var i = 0; i < available.length; i++) {
    this.availablePaths['/' + available[i]] = true;
  }
};

// Determine the content type for a given extension
@@ -24,10 +30,11 @@ StaticHandler.contentTypeFor = function(ext) {

// Handle a request, and serve back the asset if it exists
StaticHandler.prototype.handle = function(incPath, response) {
  // Go to index if not found or /
  if (!this.availablePaths[incPath]) incPath = this.defaultPath;
  var filePath = this.basePath + (incPath == '/' ? this.defaultPath : incPath);
  // And then stream the file back
  var _this = this;
  path.exists(filePath, function(exists) {
    if (exists) {
  fs.readFile(filePath, function(error, content) {
    if (error) {
      winston.error('unable to read file', { path: filePath, error: error.message });
@@ -40,12 +47,6 @@ StaticHandler.prototype.handle = function(incPath, response) {
      response.end(content, 'utf-8');
    }
  });    
    }
    else {
      // serve the default route so that pushstate can work if not found
      _this.handle('/', response);
    }
  }); 
};

module.exports = StaticHandler;
+0 −1
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ if (config.logging) {
  }
}

// TODO preparse static instead of using exists
// TODO implement command line

// Set the server up