diff options
Diffstat (limited to 'source')
| -rw-r--r-- | source/rss.js | 44 |
1 files changed, 44 insertions, 0 deletions
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) |
