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 = '
';
let imgNum = 0;
files.forEach((file) => {
//console.log(file);
imgNum += 1;
imageLists += '- ' + '
' + ' ';
});
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 = '', i;
// for (i = 0; i < files.length; i++) {
// imageLists += '- ' + files[i] + '
';
// }
// 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 = '';
let imgNum = 0;
files.forEach((file) => {
//console.log(file);
imgNum += 1;
imageLists += '- ' + '
' + ' ';
});
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();
});
}