Created
March 24, 2010 20:00
-
-
Save schell/342713 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Creates and populates a server with listeners. | |
* | |
* @param request http.ServerRequest | |
* @param response http.ServerResponse | |
* @author Schell Scivally | |
* @since Sat Mar 6 18:20:46 PST 2010 | |
*/ | |
var server = http.createServer(function (request, response) { | |
// put the response in an envelope | |
var handler = envelope.envelop(request, response); | |
// fetch a file for get a router | |
function fetch () { | |
// try to get the static file, if not, give to the router | |
fileFetcher.fetch(handler.file, function (fetchErr, data, stat) { | |
if (fetchErr) { // file does not exist, or is not readable | |
// new router each request | |
var router = require('./server/router'); | |
router.routeRequest(handler, function (routeErr) { | |
if (routeErr) { | |
sys.puts('! ' + routeErr.code + ' ' + routeErr.message); | |
handler.setCode(routeErr.code); | |
handler.sendAndClose(); | |
} else { | |
// accumulation of the body should have happend | |
// in the router | |
handler.sendAndClose(); | |
} | |
}); // end route request | |
} else { | |
handler.setCode(200); | |
handler.setHeader('Content-Length', stat.size); | |
handler.setHeader('Content-Type', mime.getMimeFromFilename(handler.file)); | |
sys.puts(' got mime:'+mime.getMimeFromFilename(handler.file)); | |
handler.setBody(data); | |
handler.sendAndClose(function () { | |
sys.puts(' wrote file'); | |
sys.puts(sys.inspect(response)); | |
response.close(); | |
}); | |
} // end on fetch error | |
}); // end fetch | |
} | |
// wait for all data from the request to be read, handler needs time to get post vars | |
request.addListener('end', function (){ | |
sys.puts(' server.js ' + response.socket.remoteAddress + ':' + response.socket.remotePort + ' ' + request.url); | |
fetch(); | |
}); // end request 'end' | |
}); // end createServer |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment