Discuss / JavaScript / Exercise

Exercise

Topic source
var
    fs = require('fs'),
    url = require('url'),
    path = require('path'),
    http = require('http'),
    glob = require('glob');

// get root dir from command line
var root = path.resolve(process.argv[2] || './static');

console.log('Static root dir: ' + root);

// create server
var server = http.createServer(function (request, response) {
    var pathname = url.parse(request.url).pathname;
    var filepath = path.join(root, pathname);

    // file status
    fs.stat(filepath, function(err, stat) {
        if (!err && stat.isFile()) {
            console.log('200: ' + request.url);
            response.writeHead(200);
            fs.createReadStream(filepath).pipe(response);
        } else if (!err && stat.isDirectory()) {
            console.log(fs.readdir(filepath, 'utf8', function(err, files) {
                if (err) {
                    console.log(err);
                } else {
                    for (let file of files) {
                        if (file == 'index.html' || file == 'default.html') {
                            console.log('200: ' + request.url);
                            response.writeHead(200);
                            fs.createReadStream(path.join(filepath, file)).pipe(response);
                        } 
                    }
                }
            }));
        } else {
            console.log('404: ' + request.url);
            response.writeHead(404);
            response.end('404 NOT FOUND');
        }
    });
});

  • 1

Reply