'use strict' const express = require('express') const fs = require('fs') const path = require('path') const app = express() app.set('view engine', 'ejs') app.get('/', (req, res) => { res.render('pages/index', { title: "Levi Olson", active: "home", content: "" }) }) app.get('/posts', (req, res) => { const postDir = __dirname + '/posts' let files = fs.readdirSync(postDir, 'utf8') let data = { title: "Posts - Levi Olson", active: "posts", posts: [] } for (let i = 0; i < files.length; i++) { if (path.extname(files[i]) === '.json') { data.posts.push(getData(files[i])) } } res.render('pages/posts', data) }) function getData(file) { let postData try { postData = JSON.parse(fs.readFileSync('./posts/' + file, 'utf8')) postData.content = fs.readFileSync('./posts/' + postData.content_file, 'utf8') } catch (e) { return } return postData } app.get('/about', (req, res) => { res.sendFile(__dirname + '/views/pages/about.html') }) app.get('/uncopyright', (req, res) => { return res.sendFile(__dirname + '/views/pages/uncopyright.html') }) app.get('/404', (req, res) => { return res.status(404).render('pages/404', { title: "Page Not Found - Levi Olson", active: "" }) }) app.get('/core.css', (req, res) => { res.sendFile(__dirname + '/core.css') }) app.get('/posts/:post', (req, res) => { let post = req.params.post let postData try { postData = JSON.parse(fs.readFileSync('./posts/' + post + '.json', 'utf8')) postData.content = fs.readFileSync('./posts/' + postData.content_file, 'utf8') } catch (e) { return res.redirect('/404') } return res.render('pages/post', postData) }) app.listen(3000, () => console.log('Example app listening on port 3000!'))