summaryrefslogtreecommitdiff
path: root/source/rss.js
diff options
context:
space:
mode:
Diffstat (limited to 'source/rss.js')
-rw-r--r--source/rss.js44
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)