summaryrefslogtreecommitdiff
path: root/app.js
diff options
context:
space:
mode:
Diffstat (limited to 'app.js')
-rw-r--r--app.js136
1 files changed, 136 insertions, 0 deletions
diff --git a/app.js b/app.js
new file mode 100644
index 0000000..69fc420
--- /dev/null
+++ b/app.js
@@ -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