const express = require('express'); const app = express(); const fs = require('fs'); const path = require('path'); let imageDir = __dirname + '/images/'; app.use(express.static(path.join(__dirname, 'public'))); app.set('view engine', 'ejs'); app.use(express.urlencoded({ extended: false })); app.get('/', (req, res) => { let langName = 'C'; let langs = getDirs(__dirname + '/images/'); let langLists = ''; langs.forEach((lang) => { langLists += '' + lang + ''; }); let urlFull = req.protocol + '://' + req.get('host') + req.originalUrl; let randomLangNum = Math.floor(Math.random() * langs.length); randomLang = 'Random Language'; fs.readdir(path.join(__dirname, '/images/' + langName + '/'), (err, files) => { if (err) res.send("Unable to get images: " + err); let imageLists = ''; //res.writeHead(200, { 'Content-type': 'text/html' }); //console.log(imageLists); res.render('index.ejs', { body: imageLists, languages: langLists, random: randomLang }); }); }); app.get('/:lang', (req, res) => { // getImages('/D/', (err, files) => { // let imageLists = ''; // res.writeHead(200, { 'Content-type': 'text/html' }); // res.send(imageLists); // }); let langName = req.params.lang; let langs = getDirs(__dirname + '/images/'); let langLists = ''; langs.forEach((lang) => { langLists += '' + lang + ''; }); let urlFull = req.protocol + '://' + req.get('host') + req.originalUrl; let randomLangNum = Math.floor(Math.random() * langs.length); randomLang = 'Random Language'; fs.readdir(path.join(__dirname, '/images/' + langName + '/'), (err, files) => { if (err) res.send("Unable to get images: " + err); let imageLists = ''; //res.writeHead(200, { 'Content-type': 'text/html' }); //console.log(imageLists); res.render('images.ejs', { body: imageLists, language: langName, languages: langLists, random: randomLang }); }); }); app.get('/:lang/:img', (req, res) => { let lang = req.params.lang, img = req.params.img; let path = imageDir + lang + '/' + img; //console.log('Fetching image:', path); res.sendFile(path); }); // app.get('*', (req, res) => { // res.redirect('/'); // }); console.log('Listening on port', process.env.PORT); app.listen(process.env.PORT); // function getImages(imgDir, callback) { // //const fileTypes = ['.png', 'jpg', 'jpeg']; // let files = [], i; // fs.readdir(imgDir, (err, list) => { // for (i = 0; i < list.length; i++) { // //if (path.extname(list[i]) in fileTypes) { } // files.push(list[i]); // } // callback(err, files); // }); // } function getDirs(path) { return fs.readdirSync(path).filter((file) => { return fs.statSync(path + '/' + file).isDirectory(); }); }