Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
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.