Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

63 lines (54 sloc) 2.224 kb
# Description:
# Allows you to send links to the RssToDoList service
#
# Dependencies:
# None
#
# Configuration:
# None
#
# Commands:
# hubot rtdl show <user_name> - Display the <user_name> RssToDoList feed url
# hubot rtdl add <user_name> <link> - Send the <link> to <user_name> RssToDoList feed
# hubot rtdl last <user_name> <limit> - Display last links for that <user_name> (you can specify an optional <limit>)
#
# Author:
# athieriot
# paulgreg
jsdom = require 'jsdom'
module.exports = (robot) ->
robot.respond /rtdl (add|show|last) ([^ ]*)( .*)?/i, (msg) ->
server_url = 'http://rsstodolist.appspot.com'
[action, user_name, arg] = [msg.match[1], escape(msg.match[2]), msg.match[3]]
if action == 'add' && arg != undefined
msg.http(server_url + '/add')
.query(n: user_name)
.query(url: arg.trim())
.get() (err, res, body) ->
status = res.statusCode
if status == 200 || status == 302
msg.reply 'The feed of ' + user_name + ' is updated'
else
msg.reply "An error occured on " + user_name + " feed"
else if action == 'show'
msg.reply user_name + ' feed is ' + server_url + '/?n=' + user_name
else if action == 'last'
msg.http(server_url + '/')
.query(n: user_name)
.query(l: arg || 10)
.get() (err, res, body) ->
try
reply = ''
xml = jsdom.jsdom(body)
for item in xml.getElementsByTagName("rss")[0].getElementsByTagName("channel")[0].getElementsByTagName("item")
do (item) ->
link = item.getElementsByTagName("link")[0].childNodes[0].nodeValue
title = item.getElementsByTagName("title")[0].childNodes[0].nodeValue
descriptionNode = item.getElementsByTagName("description")[0]
description = descriptionNode.childNodes[0].nodeValue if descriptionNode.childNodes.length == 1
reply += " - #{title},"
reply += " #{description}" if description?
reply += " (#{link})\n"
catch err
msg.reply err
msg.reply reply
Jump to Line
Something went wrong with that request. Please try again.