Skip to content

Added a new article #81

Merged
merged 1 commit into from Mar 27, 2013
View
112 articles/content-syndication-with-node.markdown
@@ -0,0 +1,112 @@
+Title: Content Syndication with Node.js
+Author: Jean-Philippe Monette
+Date: Thu Feb 28 2013 23:30:00 GMT-0500 (EST)
+Node: v0.8.15
+
+Web syndication is a must for any Website wishing to share some entries easily to other systems. Better known under their format name like [RSS](http://en.wikipedia.org/wiki/RSS_(file_format)) or [Atom](http://en.wikipedia.org/wiki/Atom_(standard)), they can be quite time consuming to generate without a module handling all their formating. Thanks to the power of Node's package manager [NPM](https://npmjs.org/), you can generate yours in no time.
+
+## Installing the feed wrapper
+
+Before we start, head to your project folder and install the latest version of the module [feed](https://github.com/jpmonette/feed):
+
+ $ npm install feed
+
+## Building the feed
+
+First, we need to initialize a new `Feed` object. When you initialize the object, you must provide general information related to your Web syndication feed.
+
+ // Require module
+ var Feed = require('feed');
+
+ // Initializing feed object
+ var feed = new Feed({
+ title: 'My Feed Title',
+ description: 'This is my personnal feed!',
+ link: 'http://example.com/',
+ image: 'http://example.com/logo.png',
+ copyright: 'Copyright © 2013 John Doe. All rights reserved',
+
+ author: {
+ name: 'John Doe',
+ email: 'john.doe@example.com',
+ link: 'https://example.com/john-doe'
+ }
+ });
+
+Second, you might want to identify your feed thematic. Both [RSS](http://en.wikipedia.org/wiki/RSS_(file_format)) and [Atom](http://en.wikipedia.org/wiki/Atom_(standard)) formats offer the possibility to identify one or multiple categories. Again, this is super simple to add:
+
+ feed.category('Node.js');
+ feed.category('JavaScript');
+
+Third, every feed require at least one item (better known as an entry). To do so, you have to use the function `item` and provide the proper object. Of course, if you are running a content Website (like a blog!), chances are that you have multiple items. To populate your feed, use a `for` loop as followed:
+
+ for(var key in posts) {
+ feed.item({
+ title: posts[key].title,
+ link: posts[key].url,
+ description: posts[key].description,
+ date: posts[key].date
+ });
+ }
+
+At this point, everything is ready to generate your [RSS](http://en.wikipedia.org/wiki/RSS_(file_format)) or Atom feed. Use the function `render`:
+
+ var output = feed.render();
+
+This is the implicit way of calling the `render` request. By default, it will render a [RSS](http://en.wikipedia.org/wiki/RSS_(file_format)) feed. You an also use the explicit way, allowing you to select between [RSS](http://en.wikipedia.org/wiki/RSS_(file_format)) or [Atom](http://en.wikipedia.org/wiki/Atom_(standard)):
+
+ // Rendering a RSS 2.0 valid feed
+ feed.render('rss-2.0');
+
+ // Rendering an Atom 1.0 valid feed
+ feed.render('atom-1.0');
+
+Yes, it's that simple!
+
+## Using with Express.js
+
+Using `feed` with [Express.js](http://expressjs.com/) is super easy. Let's say you have an `app.get()` method routing the path `/rss`. To send your feed, render your feed like we mentionned previously. After, send the result by setting the proper `Content-Type` to `text/xml`:
+
+ app.get('/rss', function(req, res) {
+
+ // Initializing feed object
+ var feed = new Feed({
+ title: 'My Feed Title',
+ description: 'This is my personnal feed!',
+ link: 'http://example.com/',
+ image: 'http://example.com/logo.png',
+ copyright: 'Copyright © 2013 John Doe. All rights reserved',
+
+ author: {
+ name: 'John Doe',
+ email: 'john.doe@example.com',
+ link: 'https://example.com/john-doe'
+ }
+ });
+
+ // Function requesting the last 5 posts to a database. This is just an
+ // example, use the way you prefer to get your posts.
+ Post.findPosts(function(posts, err) {
+ if(err)
+ res.send('404 Not found', 404);
+ else {
+ for(var key in posts) {
+ feed.item({
+ title: posts[key].title,
+ link: posts[key].url,
+ description: posts[key].description,
+ date: posts[key].date
+ });
+ }
+ // Setting the appropriate Content-Type
+ res.set('Content-Type', 'text/xml');
+
+ // Sending the feed as a response
+ res.send(feed.render('rss-2.0'));
+ }
+ });
+ });
+
+## Conclusion
+
+There you go, it was super duper easy :)! Now, people can finally read your entries feeded from your Node.js application!
View
112 articles/rendering-rss-or-atom-in-node.markdown
@@ -0,0 +1,112 @@
+Title: Rendering RSS or Atom in Node.js
+Author: Jean-Philippe Monette
+Date: Thu Feb 28 2013 23:30:00 GMT-0500 (EST)
+Node: v0.8.15
+
+Web syndication is a must for any Website wishing to share some entries easily to other systems. Better known under their format name like [RSS](http://en.wikipedia.org/wiki/RSS_(file_format)) or [Atom](http://en.wikipedia.org/wiki/Atom_(standard)), they can be quite time consuming to generate without a module handling all their formating. Thanks to the power of Node's package manager [NPM](https://npmjs.org/), you can generate yours in no time.
+
+## Installing the feed wrapper
+
+Before we start, head to your project folder and install the latest version of the module [feed](https://github.com/jpmonette/feed):
+
+ $ npm install feed
+
+## Building the feed
+
+First, we need to initialize a new `Feed` object. When you initialize the object, you must provide general information related to your Web syndication feed.
+
+ // Require module
+ var Feed = require('feed');
+
+ // Initializing feed object
+ var feed = new Feed({
+ title: 'My Feed Title',
+ description: 'This is my personnal feed!',
+ link: 'http://example.com/',
+ image: 'http://example.com/logo.png',
+ copyright: 'Copyright © 2013 John Doe. All rights reserved',
+
+ author: {
+ name: 'John Doe',
+ email: 'john.doe@example.com',
+ link: 'https://example.com/john-doe'
+ }
+ });
+
+Second, you might want to identify your feed thematic. Both [RSS](http://en.wikipedia.org/wiki/RSS_(file_format)) and [Atom](http://en.wikipedia.org/wiki/Atom_(standard)) formats offer the possibility to identify one or multiple categories. Again, this is super simple to add:
+
+ feed.category('Node.js');
+ feed.category('JavaScript');
+
+Third, every feed require at least one item (better known as an entry). To do so, you have to use the function `item` and provide the proper object. Of course, if you are running a content Website (like a blog!), chances are that you have multiple items. To populate your feed, use a `for` loop as followed:
+
+ for(var key in posts) {
+ feed.item({
+ title: posts[key].title,
+ link: posts[key].url,
+ description: posts[key].description,
+ date: posts[key].date
+ });
+ }
+
+At this point, everything is ready to generate your [RSS](http://en.wikipedia.org/wiki/RSS_(file_format)) or Atom feed. Use the function `render`:
+
+ var output = feed.render();
+
+This is the implicit way of calling the `render` request. By default, it will render a [RSS](http://en.wikipedia.org/wiki/RSS_(file_format)) feed. You an also use the explicit way, allowing you to select between [RSS](http://en.wikipedia.org/wiki/RSS_(file_format)) or [Atom](http://en.wikipedia.org/wiki/Atom_(standard)):
+
+ // Rendering a RSS 2.0 valid feed
+ feed.render('rss-2.0');
+
+ // Rendering an Atom 1.0 valid feed
+ feed.render('atom-1.0');
+
+Yes, it's that simple!
+
+## Using with Express.js
+
+Using `feed` with [Express.js](http://expressjs.com/) is super easy. Let's say you have an `app.get()` method routing the path `/rss`. To send your feed, render your feed like we mentionned previously. After, send the result by setting the proper `Content-Type` to `text/xml`:
+
+ app.get('/rss', function(req, res) {
+
+ // Initializing feed object
+ var feed = new Feed({
+ title: 'My Feed Title',
+ description: 'This is my personnal feed!',
+ link: 'http://example.com/',
+ image: 'http://example.com/logo.png',
+ copyright: 'Copyright © 2013 John Doe. All rights reserved',
+
+ author: {
+ name: 'John Doe',
+ email: 'john.doe@example.com',
+ link: 'https://example.com/john-doe'
+ }
+ });
+
+ // Function requesting the last 5 posts to a database. This is just an
+ // example, use the way you prefer to get your posts.
+ Post.findPosts(function(posts, err) {
+ if(err)
+ res.send('404 Not found', 404);
+ else {
+ for(var key in posts) {
+ feed.item({
+ title: posts[key].title,
+ link: posts[key].url,
+ description: posts[key].description,
+ date: posts[key].date
+ });
+ }
+ // Setting the appropriate Content-Type
+ res.set('Content-Type', 'text/xml');
+
+ // Sending the feed as a response
+ res.send(feed.render('rss-2.0'));
+ }
+ });
+ });
+
+## Conclusion
+
+There you go, it was super duper easy :)! Now, people can finally read your entries feeded from your Node.js application!
View
5 authors/Jean-Philippe Monette.markdown
@@ -0,0 +1,5 @@
+Github: jpmonette
+Email: contact@jpmonette.net
+Homepage: http://blogue.jpmonette.net/
+Twitter: jpmonette
+Location: Montréal, Québec, Canada
Something went wrong with that request. Please try again.