hubot-weirdmeetup-blog
Version:
Hubot WeirdMeetup Blog Reader
48 lines (37 loc) • 973 B
text/coffeescript
# Description:
# RSS Entries Fetcher
#
# Author:
# @golbin
'use strict'
request = require 'request'
FeedParser = require 'feedparser'
Promise = require 'bluebird'
module.exports = class RSSReader
fetch: (url) ->
new Promise (resolve, reject) =>
feedparser = new FeedParser
req = request
uri: url
timeout: 10000
req.on 'error', (err) ->
reject err
req.on 'response', (res) ->
stream = this
if res.statusCode isnt 200
return reject "statusCode: #{res.statusCode}"
stream.pipe feedparser
feedparser.on 'error', (err) ->
reject err
entries = []
feedparser.on 'data', (chunk) =>
entry =
url: chunk.guid
title: chunk.title
author: chunk.author
toString: ->
s = "#{@title} - #{@url}"
return s
entries.push entry
feedparser.on 'end', ->
resolve entries