def parse_rss_url(url, last_modified = nil)
begin
content, modified = Engine::get_url(url, last_modified)
$log.puts "content: #{content[0,80]}",
"modified: #{modified}" if content
rescue
raise "Couldn't get URL \"#{url}\": #$!."
end
@last_modified = modified
if content && (!modified || modified != last_modified)
content.gsub!(/<!ENTITY %.*?>/m, '') if \
$config['strip_external_entities'] && content =~ /<!ENTITY %.*?>/m
doc = REXML::Document.new content
e = nil
@title = e.text if e = doc.root.elements['//channel/title']
@link = e.text if e = doc.root.elements['//channel/link']
@desc = e.text if e = doc.root.elements['//channel/description']
@image = e.text if e = doc.root.elements['//image/url']
@lang = e.text if e = doc.root.elements['//channel/language']
@items = []
doc.root.elements.each('//item') { |e|
h = {}
['title', 'link', 'date', 'description'].each { |val|
h[val] = (t_e = e.elements[val]) ? fix_character_encoding(t_e) : ''
}
['link', 'date', 'description'].each { |key|
h[key] = find_element(e, key)
}
@items << Feed::Item.new(h['title'], h['link'],
h['description'], h['date'])
}
end
end