JSFiddle - React, Tailwind, and code Playground
JavaScript
var http = require('http'),
fs = require('fs');
function load_album (album_name, callback) {
fs.readdir("albums/", + album_name, (err, files) => {
if (err) {
if (err.code == "ENOENT") {
callback(make_error("no_such_album", "That album doesn't exist"));
} else {
callback(make_error("can't load album", "The server is broken"));
}
} else {
//callback(null, files);
var only_files = [];
var path = `albums/${album_name}/`;
var iterator = (index) => {
if (index == files.length) {
var obj = { short_name : album_name,
photos : only_files};
callback(null, obj);
return;
}
fs.stat(path + files[index], (err, stats) => {
if (!err && stats.isFile()) {
only_files.push(files[index]);
}
iterator(index + 1);
});
};
iterator(0);
}
});
}
}
function handle_incoming_request (req, res) {
console.log("incoming request: " + req.method + " " +req.url);
if (req.url == '/albums.json') {
load_album_list((err, albums) => {
if (err) {
res.writeHead(500, {"Content-Type" : "application/json "});
res.end(JSON.stringify({ code: "cant_load_albums",
message: err.message}));
} else {
var output = { error: null, data: { albums: albums}};
res.writeHead(200, { "Content-Type" : "application/json"});
res.end(JSON.stringify(output) + "\n");
}
});
} else if (req.url.substr(0, 7) == '/albums')
&& req.url.substr(req.url.length - 5) == '.json' {
//user is requesting contents of album
load_album(req.url.substr(7, req.url.length - 12), (err, photos) => {
if (err) {
res.writeHead(500, {"Content-type" : "application/json"});
res.end(JSON.stringify(err));
} else {
var output = { error: null, data: { photos: photos }};
res.writeHead(200, { "Content-Type" : application/json});
res.end(JSON.stringify(output) + "\n");
}
});
} else {
res.writeHead(404, { "Content-type" :...