diff options
Diffstat (limited to 'app.js')
| -rw-r--r-- | app.js | 136 |
1 files changed, 136 insertions, 0 deletions
@@ -0,0 +1,136 @@ +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 += '<a class="dropdown-item" href="/' + lang + '/">' + lang + '</a>'; + }); + + let urlFull = req.protocol + '://' + req.get('host') + req.originalUrl; + + let randomLangNum = Math.floor(Math.random() * langs.length); + + randomLang = '<a class="dropdown-item" href="' + '/' + langs[randomLangNum] + '/' + '">Random Language</a>'; + + fs.readdir(path.join(__dirname, '/images/' + langName + '/'), (err, files) => { + if (err) res.send("Unable to get images: " + err); + + let imageLists = '<ul style="text-align: center; padding: 0px">'; + let imgNum = 0; + + files.forEach((file) => { + //console.log(file); + imgNum += 1; + imageLists += '<li class="hideme copycat" style="display: inline-block; margin: 10px" data-clipboard-text="' + urlFull + '#img-' + imgNum + '"><a href="' + '/' + langName + '/' + file + '">' + '<img id="img-' + imgNum + '" src="' + '/' + langName + '/' + file + '" width="200px">' + '</a></li>'; + }); + imageLists += '</ul>'; + //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 = '<ul>', i; + // for (i = 0; i < files.length; i++) { + // imageLists += '<li><a href = /?image=' + files[i] + '">' + files[i] + '</li>'; + // } + + // imageLists += '</ul>'; + // 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 += '<a class="dropdown-item" href="/' + lang + '/">' + lang + '</a>'; + }); + + let urlFull = req.protocol + '://' + req.get('host') + req.originalUrl; + + let randomLangNum = Math.floor(Math.random() * langs.length); + + randomLang = '<a class="dropdown-item" href="' + '/' + langs[randomLangNum] + '/' + '">Random Language</a>'; + + fs.readdir(path.join(__dirname, '/images/' + langName + '/'), (err, files) => { + if (err) res.send("Unable to get images: " + err); + + let imageLists = '<ul style="text-align: center; padding: 0px">'; + let imgNum = 0; + + files.forEach((file) => { + //console.log(file); + imgNum += 1; + imageLists += '<li class="hideme copycat" style="display: inline-block; margin: 10px" data-clipboard-text="' + urlFull + '#img-' + imgNum + '"><a href="' + '/' + langName + '/' + file + '">' + '<img id="img-' + imgNum + '" src="' + '/' + langName + '/' + file + '" width="200px">' + '</a></li>'; + }); + imageLists += '</ul>'; + //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 1337'); +app.listen(1337); + +// 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(); + }); +}
\ No newline at end of file |