|
|
@ -0,0 +1,65 @@ |
|
|
|
One of the beautiful things about Node is that it is really easy to do just about anything in a few lines of code. |
|
|
|
To put this in perspective, it took me longer to make this *terrible* blog post header than it did for me to implement an RSS feed in node. |
|
|
|
An RSS (rich site summary) feed enables people to subscribe to blogs and get notified when there is a new post. |
|
|
|
People also use RSS feeds to aggregate all the blogs they read in one place. |
|
|
|
Although RSS is on the decline, it is still widely used in the tech community. |
|
|
|
|
|
|
|
Before looked for a package I added a route listening on "/rss" which sends a static object that will eventually store the RSS feed object. |
|
|
|
|
|
|
|
```javascript |
|
|
|
routes.get('/rss', (request, result) => |
|
|
|
{ |
|
|
|
result.set('Content-Type', 'text/xml'); |
|
|
|
result.send(xmlFeed); |
|
|
|
}); |
|
|
|
``` |
|
|
|
|
|
|
|
The next step was to find a nifty node package that handles the generation of RSS XML. |
|
|
|
I'm using the [package](https://www.npmjs.com/package/rss) adequately named "RSS". |
|
|
|
|
|
|
|
```bash |
|
|
|
npm install -s rss |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
Based on the documentation for the package, I initialized the RSS generator object. |
|
|
|
|
|
|
|
``` |
|
|
|
// defines basic details about your blog |
|
|
|
var feed = new RSS({ |
|
|
|
title: 'jrtechs', |
|
|
|
description: 'Jeffery\'s blog which has everything from data-science to cooking', |
|
|
|
feed_url: 'https://jrtechs.net/rss', |
|
|
|
site_url: 'https://jrtechs.net', |
|
|
|
image_url: 'https://jrtechs.net/includes/img/favicon/android-chrome-512x512.png', |
|
|
|
docs: 'https://github.com/jrtechs/NodeJSBlog', |
|
|
|
language: 'en', |
|
|
|
categories: ['other', 'hardware', 'open-source', 'programming', 'projects', 'web-development', 'data-science'], |
|
|
|
}); |
|
|
|
|
|
|
|
var xmlFeed = feed.xml(); |
|
|
|
``` |
|
|
|
|
|
|
|
The final step was to add all the recent posts to the RSS feed. |
|
|
|
|
|
|
|
```javascript |
|
|
|
const sql = require('../utils/sql'); |
|
|
|
sql.getRecentPosts().then((posts)=> |
|
|
|
{ |
|
|
|
posts.forEach(post => |
|
|
|
{ |
|
|
|
feed.item({ |
|
|
|
title: post.name, |
|
|
|
url: "https://jrtechs.net/" + post.category + "/" + post.url, |
|
|
|
date: post.published |
|
|
|
}); |
|
|
|
}); |
|
|
|
xmlFeed = feed.xml(); |
|
|
|
}).catch((err)=> |
|
|
|
{ |
|
|
|
console.log(err); |
|
|
|
}); |
|
|
|
``` |
|
|
|
|
|
|
|
Although my implementation is probably very rudimentary, it is flexible and implementing it myself gave me a deeper appreciation for RSS. |
|
|
|
Looking through the package documentation, I discovered a multitude of details that RSS feeds could contain that I didn't know about. |