diff --git a/node/rss.js b/node/rss.js index 487c4a9..caffc55 100644 --- a/node/rss.js +++ b/node/rss.js @@ -7,25 +7,18 @@ const converter = new showdown.Converter({ parseImgDimensions: true }); -module.exports = function (app) { - app.get('/rss.xml', function (_req, res) { +module.exports = function () { + let folder = __dirname + "/../"; + fs.watchFile(folder + "blog/posts.json", function (curr, prev) { + if (curr.mtime == prev.mtime) + return; + console.log("Refreshing feeds..."); createFeed(function (feed) { - res.header('Content-Type', 'application/xml'); - res.send(feed.rss2()); + fs.writeFile(folder + "feed.json", feed.json1(), function (_, _) {}); + fs.writeFile(folder + "rss.xml", feed.rss2(), function (_, _) {}); + fs.writeFile(folder + "atom.xml", feed.atom1(), function (_, _) {}); }); }); - app.get('/feed.json', function (_req, res) { - createFeed(function (feed) { - res.header('Content-Type', 'application/json'); - res.send(feed.json1()); - }); - }); - app.get('/atom.xml', function (_req, res) { - createFeed(function (feed) { - res.header('Content-Type', 'application/xml'); - res.send(feed.atom1()); - }); - }) } function createFeed(callback) { diff --git a/node/server.js b/node/server.js index f2b419b..a83b2bf 100644 --- a/node/server.js +++ b/node/server.js @@ -1,6 +1,2 @@ -const express = require("express"); - -let app = express(); -require("./rss")(app); -require("./sitemap")(app); -app.listen(3000); \ No newline at end of file +require("./rss")(); +require("./sitemap")(); \ No newline at end of file diff --git a/node/sitemap.js b/node/sitemap.js index 0b41b77..cf79228 100644 --- a/node/sitemap.js +++ b/node/sitemap.js @@ -3,8 +3,13 @@ const { } = require('sitemap'); const fs = require("fs"); -module.exports = function (app) { - app.get('/sitemap.xml', function (_req, res) { +module.exports = function () { + let folder = __dirname + "/../"; + fs.watchFile(folder + "blog/posts.json", function (curr, prev) { + if (curr.mtime == prev.mtime) + return; + console.log("Refreshing sitemap..."); + let sitemap = createSitemap({ hostname: 'https://ellpeck.de', urls: [{ @@ -31,7 +36,7 @@ module.exports = function (app) { ] }); - fs.readFile(__dirname + "/../blog/posts.json", function (_, data) { + fs.readFile(folder + "blog/posts.json", function (_, data) { let json = JSON.parse(data); for (let post of json) { @@ -41,8 +46,7 @@ module.exports = function (app) { }); } - res.header('Content-Type', 'application/xml'); - res.send(sitemap.toXML()); + fs.writeFile(folder + "/sitemap.xml", sitemap.toXML(), function (_, _) {}); }); }); } \ No newline at end of file