Module: Html2rss::Html::ArticleRules::Enclosure

Defined in:
lib/html2rss/html/article_rules/enclosure.rb

Overview

DOM-agnostic enclosure URL/type normalization.

Constant Summary collapse

ARCHIVE_HREF_SUFFIXES =

Href path suffixes treated as download/archive enclosure links.

%w[.pdf .zip .tar.gz .tgz].freeze

Class Method Summary collapse

Class Method Details

.archive_href?(href) ⇒ Boolean

Parameters:

  • href (String)

Returns:

  • (Boolean)


16
17
18
# File 'lib/html2rss/html/article_rules/enclosure.rb', line 16

def archive_href?(href)
  ARCHIVE_HREF_SUFFIXES.any? { |suffix| href.to_s.end_with?(suffix) }
end

.from_anchor(href, base_url) ⇒ Hash{Symbol => Object}?

Parameters:

Returns:

  • (Hash{Symbol => Object}, nil)


57
58
59
60
61
62
63
64
65
66
67
# File 'lib/html2rss/html/article_rules/enclosure.rb', line 57

def from_anchor(href, base_url)
  return if href.to_s.empty?

  abs = Url.from_relative(href, base_url)
  type = if href.end_with?('.pdf')
           Article::Enclosure.guess_content_type_from_url(abs)
         else
           'application/zip'
         end
  { url: abs, type: }
end

.from_iframe(src, base_url) ⇒ Hash{Symbol => Object}?

Parameters:

Returns:

  • (Hash{Symbol => Object}, nil)


46
47
48
49
50
51
# File 'lib/html2rss/html/article_rules/enclosure.rb', line 46

def from_iframe(src, base_url)
  return if src.to_s.empty?

  abs = Url.from_relative(src, base_url)
  { url: abs, type: Article::Enclosure.guess_content_type_from_url(abs, default: 'text/html') }
end

.from_image(src, base_url) ⇒ Hash{Symbol => Object}?

Parameters:

Returns:

  • (Hash{Symbol => Object}, nil)


24
25
26
27
28
29
# File 'lib/html2rss/html/article_rules/enclosure.rb', line 24

def from_image(src, base_url)
  return if src.to_s.empty?

  abs = Url.from_relative(src, base_url)
  { url: abs, type: Article::Enclosure.guess_content_type_from_url(abs, default: 'image/jpeg') }
end

.from_media(src, type, base_url) ⇒ Hash{Symbol => Object}?

Parameters:

  • src (String)
  • type (String, nil)
  • base_url (String, Html2rss::Url)

Returns:

  • (Hash{Symbol => Object}, nil)


36
37
38
39
40
# File 'lib/html2rss/html/article_rules/enclosure.rb', line 36

def from_media(src, type, base_url)
  return if src.to_s.empty?

  { url: Url.from_relative(src, base_url), type: }
end