Sha256: 85c21f63ecbc971a5af9c7aa71b8528ca14b76b99da81651979abe7bcdd39eb9

Contents?: true

Size: 851 Bytes

Versions: 5

Compression:

Stored size: 851 Bytes

Contents

require "rss"

module Feedcellar
  class Resource
    def self.parse(url)
      begin
        rss = RSS::Parser.parse(url)
      rescue RSS::InvalidRSSError
        rss = RSS::Parser.parse(url, false)
      rescue
        $stderr.puts "WARNING: #{$!} (#{url})"
        return nil
      end

      unless rss
        $stderr.puts "ERROR: Invalid URL"
        return nil
      end

      resource = {}
      if rss.is_a?(RSS::Atom::Feed)
        resource["xmlUrl"] = url
        resource["title"] = rss.title.content
        resource["htmlUrl"] = rss.link.href
        resource["description"] = rss.dc_description
      else
        resource["xmlUrl"] = url
        resource["title"] = rss.channel.title
        resource["htmlUrl"] = rss.channel.link
        resource["description"] = rss.channel.description
      end

      resource
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
feedcellar-0.4.0 lib/feedcellar/resource.rb
feedcellar-0.3.2 lib/feedcellar/resource.rb
feedcellar-0.3.1 lib/feedcellar/resource.rb
feedcellar-0.3.0 lib/feedcellar/resource.rb
feedcellar-0.2.2 lib/feedcellar/resource.rb