Sha256: f085e8f8c29d331cce9ab531c2d810d0bf73023a2f0b82ba5befc806e277e3e7

Contents?: true

Size: 1.39 KB

Versions: 2

Compression:

Stored size: 1.39 KB

Contents

module Feedjira
  module Podcast
    module Item
      module Optional
        module InstanceMethods
          def categories
            category.map(&:strip).uniq
          end

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

        def self.included(base)
          base.include(InstanceMethods)

          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

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

          base.element :enclosure, as: :enclosure_length, value: :length, &:to_f

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

          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

2 entries across 2 versions & 1 rubygems

Version Path
feedjira-podcast-0.9.10 lib/feedjira/podcast/item/optional.rb
feedjira-podcast-0.9.9 lib/feedjira/podcast/item/optional.rb