mirror of
https://github.com/zammad/zammad
synced 2026-05-24 09:48:36 +00:00
38 lines
991 B
Ruby
38 lines
991 B
Ruby
require 'simple-rss'
|
|
module Rss
|
|
def self.fetch(url, limit = 10)
|
|
cache_key = 'rss::' + url
|
|
items = Cache.get( cache_key )
|
|
return items if items
|
|
|
|
begin
|
|
Rails.logger.info "fetch rss... #{url}"
|
|
response = UserAgent.request(url)
|
|
if !response.success?
|
|
raise "Can't fetch '#{url}', http code: #{response.code}"
|
|
end
|
|
rss = SimpleRSS.parse response.body
|
|
items = []
|
|
fetched = 0
|
|
rss.items.each { |item|
|
|
record = {
|
|
id: item.id,
|
|
title: Encode.conv( 'utf8', item.title ),
|
|
summary: Encode.conv( 'utf8', item.summary ),
|
|
link: item.link,
|
|
published: item.published
|
|
}
|
|
items.push record
|
|
fetched += 1
|
|
break item if fetched == limit.to_i
|
|
}
|
|
Cache.write( cache_key, items, expires_in: 4.hours )
|
|
rescue => e
|
|
Rails.logger.error "can't fetch #{url}"
|
|
Rails.logger.error e.inspect
|
|
return
|
|
end
|
|
|
|
items
|
|
end
|
|
end
|