Sha256: 505ba5f872c8651e66174d7f6cb8f4a770441f1bdd934445bc0fb0bb12e7e2e0

Contents?: true

Size: 854 Bytes

Versions: 1

Compression:

Stored size: 854 Bytes

Contents

require "feedzirra"
require "rss-feed/railtie" if defined?(Rails)

module Rss
  module Feed

    def self.included(base)
      base.extend(ClassMethods)
    end

    module ClassMethods
      def feed_entries
        @feed ? @feed.entries : []
      end

      def subscribes_to(feed_url)
        @feed_url = feed_url
      end

      def feed_url
        @feed_url
      end

      def get_feed
        Feedzirra::Feed.fetch_and_parse(@feed_url).tap do |feed|
          @feed = feed != 0 ? feed : nil
        end
      end

      def update_from_feed
        get_feed
        feed_entries.each do |entry|
          entry.sanitize!
          entry_attributes = entry.as_json.inject({}) do |mem, (key, value)|
            mem[key.to_sym] = value; mem
          end
          self.find_or_create_by entry_attributes
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rss-feed-0.8.2 lib/rss-feed.rb