34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
# File 'lib/housefire.rb', line 34
def poll_lighthouse
puts "running..."
recent_items = load_db(@conf['lhcache']) || {}
doc = Nokogiri::XML(`curl -su "#{@conf['lhuser']}":#{@conf['lhpass']} https://#{@conf['lhdomain']}.lighthouseapp.com/events.atom`)
doc.css("entry").each do |entry|
begin
id = entry.css("id")[0].content.split("Event/")[1].to_i
if !recent_items.key?(id)
e = {}
e[:id] = id
title = entry.css("title")[0].content
puts "title = #{title}"
case
when title.include?("[Changeset] ")
puts "Discarding Changeset message..."
when title.include?("[Page] ")
e[:title] = title
e[:author] = entry.css("author name")[0].content
e[:link] = entry.css("link")[0].attributes["href"].content
message = "#{e[:title]} - #{e[:author]} #{e[:link]}"
puts message + "\n\n\n"
@room.speak(message)
when title.include?("New ")
message = entry.css("content")[0].content
puts message + "\n\n\n"
@room.speak(message)
when title.include?(" Bulk Edit: ")
e[:title] = title
e[:content] = Sanitize.clean(entry.css("content")[0].content)
e[:author] = entry.css("author name")[0].content
e[:link] = entry.css("link")[0].attributes["href"].content
message = "#{e[:title]} - #{e[:content].gsub(/[^[:print:]]/, '').gsub(/&/,'&')} #{e[:author]} #{e[:link]}"
puts message + "\n\n\n"
@room.speak(message)
when title.include?("[Milestone] ")
e[:title] = title
e[:content] = Sanitize.clean(entry.css("content")[0].content)
e[:author] = entry.css("author name")[0].content
e[:link] = entry.css("link")[0].attributes["href"].content
message = "#{e[:title]} -- #{e[:content].gsub(/[^[:print:]]/, '').gsub(/&/,'&')} - #{e[:author]} #{e[:link]}"
puts message + "\n\n\n"
@room.speak(message)
when title[/\s\[#\d+\]$/] != nil
e[:title] = title
if entry.css("content").empty?
e[:content] = "NEW"
else
content = Sanitize.clean(entry.css("content")[0].content)
e[:content] = (content.length > 200) ? content[0..200] + "..." : content
end
e[:author] = entry.css("author name")[0].content
e[:link] = entry.css("link")[0].attributes["href"].content
message = "#{e[:title]} -- #{e[:content]} - #{e[:author]} #{e[:link]}"
puts message + "\n\n\n"
@room.speak(message)
else
puts "Not a valid message...or perhaps a new format."
end
recent_items[id] = e
save_db(@conf['lhcache'], recent_items)
end
rescue Exception => e
puts e.message
puts e.backtrace.inspect
end
end
end
|