From 75e5102ffd532a50604f6a95864fa6a13c32c235 Mon Sep 17 00:00:00 2001 From: terminaldweller Date: Sat, 5 Mar 2022 01:29:05 +0330 Subject: rss, WIP --- server.js | 19 +++++++++++-------- views/index.ejs | 4 ++++ views/rss_feed.pug | 21 +++++++++++++++++++++ 3 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 views/rss_feed.pug diff --git a/server.js b/server.js index ec4350e..6ae2184 100755 --- a/server.js +++ b/server.js @@ -33,6 +33,10 @@ app.engine("ejs", require("ejs").__express); app.use(helmet()); app.use(morgan("combined")); +async function enumerateDir() { + return await fs.readdirSync(path.join(__dirname, "mds")); +} + function renderAndSend(req, res) { try { let viewPath; @@ -90,10 +94,13 @@ app.get("/robots.txt", (req, res) => { res.send(robots_txt); }); -// app.get("/rss/feed", (req, res) => { -// let html = pug.renderFile("./views/rss_feed.pug", merge(options, localls)); -// res.send(html); -// }); +app.get("/rss/feed", (req, res) => { + const compiledFunction = pug.compileFile("./views/rss_feed.pug"); + const files = fs.readdirSync(path.join(__dirname, "mds")); + for (const file of files) { + res.send(compiledFunction(file)); + } +}); app.get("/$", (req, res) => { renderAndSend(req, res); @@ -106,10 +113,6 @@ app.get("/mds/:mdname$", (req, res) => { renderAndSend(req, res); }); -async function enumerateDir() { - return await fs.readdirSync(path.join(__dirname, "mds")); -} - app.use(sitemap(enumerateDir, "https://blog.terminaldweller.com")); app.use((req, res) => { diff --git a/views/index.ejs b/views/index.ejs index 4679e4a..529a5ed 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -5,6 +5,8 @@ Blog + + @@ -15,6 +17,8 @@
Archive About +     + RSS diff --git a/views/rss_feed.pug b/views/rss_feed.pug new file mode 100644 index 0000000..9bdd9bd --- /dev/null +++ b/views/rss_feed.pug @@ -0,0 +1,21 @@ +doctype xml +rss(version='2.0', xmlns:atom='http://www.w3.org/2005/Atom') + channel + title DevSmash + link http://devsmash.com + atom:link(href='http://devsmash.com/feed/rss', rel='self', type='application/rss+xml') + description Developers talking about stuff that developers like to talk about. + language en-US + if posts.length + lastBuildDate= new Date(posts[0].publishedAt).toUTCString() + each post in posts + item + title= post.title + link http://devsmash.com/blog/#{post.slug} + description + | http://devsmash.com/blog/#{post.slug}')!= 'Read more »' + | ]]> + pubDate= new Date(post.publishedAt).toUTCString() + guid(isPermaLink='false')