Sha256: 9739e4c53ee9f3a44e8dfe6d825a462402c37972c18a1bd5d2711907b446ba68

Contents?: true

Size: 1.36 KB

Versions: 6

Compression:

Stored size: 1.36 KB

Contents

module Feedjira
  module Podcast
    module Item
      module Optional
        def self.included(base)

          base.element :link do |link|
            Addressable::URI.parse(link)
          end

          base.element :author

          base.elements :category

          base.element :comments do |comments|
            Addressable::URI.parse(comments)
          end

          def categories
            category.map{|c|c.strip}.uniq
          end

          base.element :enclosure, as: :enclosure_url, value: :url do |url|
            Addressable::URI.parse(url)
          end

          base.element :enclosure, as: :enclosure_length, value: :length do |length|
            length.to_f
          end

          base.element :enclosure, as: :enclosure_type, value: :type

          def enclosure
            @enclosure ||= Struct.new(:url, :length, :type).new(
              enclosure_url,
              enclosure_length,
              enclosure_type,
            )
          end

          base.element :guid, as: :guid, class: GUID, default: Struct.new(:guid, :perma_link?).new

          base.element :pubDate, as: :pub_date do |date|
            begin
              Time.parse(date)
            rescue
              nil
            end
          end

          base.element :source, class: Source, default: Struct.new(:name, :url).new

        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
feedjira-podcast-0.9.8 lib/feedjira/podcast/item/optional.rb
feedjira-podcast-0.9.7 lib/feedjira/podcast/item/optional.rb
feedjira-podcast-0.9.6 lib/feedjira/podcast/item/optional.rb
feedjira-podcast-0.9.5 lib/feedjira/podcast/item/optional.rb
feedjira-podcast-0.9.4 lib/feedjira/podcast/item/optional.rb
feedjira-podcast-0.9.3 lib/feedjira/podcast/item/optional.rb