class FeedUtils::RssFeedBuilder
todo/fix:
rename to Rss20FeedBuilder?? or FeedBuilderRss20 ??
Public Class Methods
build( rss_feed )
click to toggle source
# File lib/feedutils/builder/rss.rb, line 19 def self.build( rss_feed ) feed = self.new( rss_feed ) feed.to_feed end
new( rss_feed )
click to toggle source
# File lib/feedutils/builder/rss.rb, line 11 def initialize( rss_feed ) @feed = build_feed( rss_feed ) end
Public Instance Methods
build_feed( rss_feed )
click to toggle source
# File lib/feedutils/builder/rss.rb, line 25 def build_feed( rss_feed ) feed = Feed.new ## feed.object = rss_feed # not use for now feed.format = "rss #{rss_feed.rss_version}" feed.title = rss_feed.channel.title # required feed.url = rss_feed.channel.link # required feed.summary = rss_feed.channel.description # required logger.debug " rss | channel.description: >#{rss_feed.channel.description}< : #{rss_feed.channel.description.class.name}" # NOTE: # All date-times in RSS conform # to the Date and Time Specification of RFC 822 # e.g. Sun, 19 May 2012 15:21:36 GMT or # Sat, 07 Sep 2013 00:00:01 GMT ## convert from time to to_datetime (avoid errors on windows w/ builtin rss lib) feed.built = rss_feed.channel.lastBuildDate.nil? ? nil : rss_feed.channel.lastBuildDate.to_datetime # optional feed.published = rss_feed.channel.pubDate.nil? ? nil : rss_feed.channel.pubDate.to_datetime # optional logger.debug " rss | channel.lastBuildDate: >#{rss_feed.channel.lastBuildDate}< : #{rss_feed.channel.lastBuildDate.class.name}" logger.debug " rss | channel.pubDate: >#{rss_feed.channel.pubDate}< : #{rss_feed.channel.pubDate.class.name}" feed.generator = rss_feed.channel.generator # optional logger.debug " rss | channel.generator: >#{rss_feed.channel.generator}< : #{rss_feed.channel.generator.class.name}" items = [] rss_feed.items.each do |rss_item| items << build_feed_item( rss_item ) end feed.items = items feed # return new feed end
build_feed_item( rss_item )
click to toggle source
# File lib/feedutils/builder/rss.rb, line 65 def build_feed_item( rss_item ) item = Item.new ## item.object = rss_item # not use for now item.title = rss_item.title item.url = rss_item.link logger.debug " rss | item.title: >#{rss_item.title}< : #{rss_item.title.class.name}" logger.debug " rss | item.link: >#{rss_item.link}< : #{rss_item.link.class.name}" ## todo: ## check if feedburner:origLink present - if yes, use it for url/link ## example: use ## - <feedburner:origLink>http://www.rubyflow.com/items/9803-gotta-ruby-s-syntax</feedburner:origLink></item> ## instead of ## - <link>http://feedproxy.google.com/~r/Rubyflow/~3/Ym9Sltg_2_c/9803-gotta-ruby-s-syntax</link> item.summary = rss_item.description # check for <content:encoded> # -- using RSS 1.0 content module in RSS 2.0 item.content = rss_item.content_encoded logger.debug " rss | item.content_encoded[0..40]: >#{rss_item.content_encoded ? rss_item.content_encoded[0..40] : ''}< : #{rss_item.content_encoded.class.name}" # NOTE: # All date-times in RSS conform # to the Date and Time Specification of RFC 822 # e.g. Sun, 19 May 2012 15:21:36 GMT or # Sat, 07 Sep 2013 00:00:01 GMT ## convert from time to to_datetime (avoid errors on windows w/ builtin rss lib) item.published = rss_item.pubDate.nil? ? nil : rss_item.pubDate.to_datetime # .utc.strftime( "%Y-%m-%d %H:%M" ) logger.debug " rss | item.pubDate: >#{rss_item.pubDate}< : #{rss_item.pubDate.class.name}" ## fix/todo: check if rss_item.guid present? !!!! ## ## might be the case e.g. check lambda-the-ultimate.org, for example if rss_item.guid && rss_item.guid.content item.guid = rss_item.guid.content logger.debug " rss | item.guid.content: >#{rss_item.guid.content}< : #{rss_item.guid.content.class.name}" else item.guid = rss_item.link logger.warn " rss | item.guid.content missing !!!! - using link for guid" end ### todo: add support or authors (incl. dc:creator) ## <dc:creator>Dhaivat Pandya</dc:creator> # todo: categories # <category><![CDATA[Gems]]></category> # <category><![CDATA[Ruby]]></category> # <category><![CDATA[Ruby on Rails]]></category> item end
to_feed()
click to toggle source
# File lib/feedutils/builder/rss.rb, line 15 def to_feed @feed end