From 1dd31494f0e270f24c2caad411e271b9bf5c781c Mon Sep 17 00:00:00 2001 From: Mhykol Date: Fri, 21 Jun 2024 08:31:02 -0400 Subject: Added rss feed for blog --- source/rss.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 source/rss.js (limited to 'source') diff --git a/source/rss.js b/source/rss.js new file mode 100644 index 0000000..175a8c1 --- /dev/null +++ b/source/rss.js @@ -0,0 +1,44 @@ +const blog = require('./blog')() +const rss = require('rss') + +class RSS { + constructor(x) { + this.object = { + feed: null, + baseUrl: x.baseUrl, + } + } + + async GetFeed(x) { + if (this.object.feed) { + return this.object.feed + } else { + return await this.#CreateFeed(x).then(feed => { + this.object.feed = feed + return this.object.feed + }) + } + } + + async #CreateFeed(x) { + return blog.ReadBlogs().then(blogs => { + const feed = new rss({ + title: x.title, + description: x.description, + author: x.author + }) + + blogs.forEach(value => { + feed.item({ + title: value.title, + description: value.body, + url: `${this.object.baseUrl}blog`, + date: value.date + }) + }) + return feed.xml({ident: true}) + }) + } +} + +module.exports = (x) => new RSS(x) -- cgit v1.2.3-70-g09d2