summaryrefslogtreecommitdiff
path: root/src/build/rss.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'src/build/rss.mjs')
-rw-r--r--src/build/rss.mjs42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/build/rss.mjs b/src/build/rss.mjs
new file mode 100644
index 0000000..606cdef
--- /dev/null
+++ b/src/build/rss.mjs
@@ -0,0 +1,42 @@
+import RSS from 'rss';
+
+const siteUrl = 'https://ache.one';
+
+const getRSS = articles => {
+ const rssFeed = new RSS({
+ title: 'ache: Blog personnel',
+ description: 'Programmation, Algorithmique, Système, *pick you poison*',
+ // eslint-disable-next-line camelcase
+ feed_url: `${siteUrl}/feed.xml`,
+ // eslint-disable-next-line camelcase
+ site_url: siteUrl,
+ // eslint-disable-next-line camelcase
+ image_url: `${siteUrl}/ache.svg`,
+ language: 'fr',
+ pubDate: (new Date().toLocaleString()),
+ ttl: '1440',
+ // eslint-disable-next-line camelcase
+ custom_elements: ['<?xml-stylesheet type="text/css" href="http://localhost:8080/s/css/style.css" ?>'],
+ });
+
+ for (const article of articles.slice(0, 10)) {
+ rssFeed.item({
+ title: article.title,
+ description: '<article>' + article.content + '</article>',
+ // eslint-disable-next-line camelcase
+ image_url: article.imageUrl,
+ url: `${siteUrl}/articles/${article.domTitle}`,
+ guid: article.domTitle,
+ author: 'ache',
+ // eslint-disable-next-line camelcase
+ custom_elements: [
+ {logo: article.imageUrl},
+ {intro: article.introDesc},
+ ],
+ });
+ }
+
+ return rssFeed.xml({indent: false}).replace(/<\?xml version="1.0" encoding="UTF-8"\?>/g, '<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="/style.xsl"?>');
+};
+
+export default getRSS;