feedjira 3.1.1 → 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE/feed-parsing.md +15 -0
  3. data/.rubocop.yml +19 -627
  4. data/.rubocop_todo.yml +4 -29
  5. data/.travis.yml +0 -1
  6. data/CHANGELOG.md +5 -0
  7. data/Gemfile +4 -2
  8. data/Rakefile +3 -1
  9. data/feedjira.gemspec +6 -10
  10. data/lib/feedjira.rb +4 -3
  11. data/lib/feedjira/configuration.rb +5 -3
  12. data/lib/feedjira/core_ext.rb +2 -0
  13. data/lib/feedjira/core_ext/date.rb +3 -1
  14. data/lib/feedjira/core_ext/string.rb +2 -0
  15. data/lib/feedjira/core_ext/time.rb +2 -0
  16. data/lib/feedjira/date_time_utilities.rb +8 -8
  17. data/lib/feedjira/date_time_utilities/date_time_epoch_parser.rb +3 -0
  18. data/lib/feedjira/date_time_utilities/date_time_language_parser.rb +4 -2
  19. data/lib/feedjira/date_time_utilities/date_time_pattern_parser.rb +9 -9
  20. data/lib/feedjira/feed.rb +2 -0
  21. data/lib/feedjira/feed_entry_utilities.rb +5 -3
  22. data/lib/feedjira/feed_utilities.rb +5 -2
  23. data/lib/feedjira/parser.rb +2 -0
  24. data/lib/feedjira/parser/atom.rb +3 -1
  25. data/lib/feedjira/parser/atom_entry.rb +2 -0
  26. data/lib/feedjira/parser/atom_feed_burner.rb +4 -2
  27. data/lib/feedjira/parser/atom_feed_burner_entry.rb +2 -2
  28. data/lib/feedjira/parser/atom_google_alerts.rb +3 -1
  29. data/lib/feedjira/parser/atom_google_alerts_entry.rb +6 -5
  30. data/lib/feedjira/parser/atom_youtube.rb +2 -0
  31. data/lib/feedjira/parser/atom_youtube_entry.rb +2 -0
  32. data/lib/feedjira/parser/globally_unique_identifier.rb +2 -0
  33. data/lib/feedjira/parser/google_docs_atom.rb +4 -2
  34. data/lib/feedjira/parser/google_docs_atom_entry.rb +2 -0
  35. data/lib/feedjira/parser/itunes_rss.rb +4 -2
  36. data/lib/feedjira/parser/itunes_rss_category.rb +2 -0
  37. data/lib/feedjira/parser/itunes_rss_item.rb +3 -1
  38. data/lib/feedjira/parser/itunes_rss_owner.rb +2 -0
  39. data/lib/feedjira/parser/json_feed.rb +4 -2
  40. data/lib/feedjira/parser/json_feed_item.rb +7 -1
  41. data/lib/feedjira/parser/podlove_chapter.rb +3 -0
  42. data/lib/feedjira/parser/rss.rb +4 -1
  43. data/lib/feedjira/parser/rss_entry.rb +2 -0
  44. data/lib/feedjira/parser/rss_feed_burner.rb +3 -1
  45. data/lib/feedjira/parser/rss_feed_burner_entry.rb +2 -2
  46. data/lib/feedjira/parser/rss_image.rb +2 -0
  47. data/lib/feedjira/preprocessor.rb +3 -1
  48. data/lib/feedjira/rss_entry_utilities.rb +6 -2
  49. data/lib/feedjira/version.rb +3 -1
  50. data/spec/feedjira/configuration_spec.rb +2 -0
  51. data/spec/feedjira/date_time_utilities_spec.rb +2 -0
  52. data/spec/feedjira/feed_entry_utilities_spec.rb +4 -2
  53. data/spec/feedjira/feed_spec.rb +2 -0
  54. data/spec/feedjira/feed_utilities_spec.rb +5 -3
  55. data/spec/feedjira/parser/atom_entry_spec.rb +6 -4
  56. data/spec/feedjira/parser/atom_feed_burner_entry_spec.rb +7 -5
  57. data/spec/feedjira/parser/atom_feed_burner_spec.rb +4 -2
  58. data/spec/feedjira/parser/atom_google_alerts_entry_spec.rb +6 -4
  59. data/spec/feedjira/parser/atom_google_alerts_spec.rb +2 -0
  60. data/spec/feedjira/parser/atom_spec.rb +9 -7
  61. data/spec/feedjira/parser/atom_youtube_entry_spec.rb +6 -4
  62. data/spec/feedjira/parser/atom_youtube_spec.rb +6 -4
  63. data/spec/feedjira/parser/google_docs_atom_entry_spec.rb +2 -0
  64. data/spec/feedjira/parser/google_docs_atom_spec.rb +2 -0
  65. data/spec/feedjira/parser/itunes_rss_item_spec.rb +3 -1
  66. data/spec/feedjira/parser/itunes_rss_owner_spec.rb +2 -0
  67. data/spec/feedjira/parser/itunes_rss_spec.rb +11 -9
  68. data/spec/feedjira/parser/json_feed_item_spec.rb +5 -3
  69. data/spec/feedjira/parser/json_feed_spec.rb +2 -0
  70. data/spec/feedjira/parser/podlove_chapter_spec.rb +2 -0
  71. data/spec/feedjira/parser/rss_entry_spec.rb +6 -4
  72. data/spec/feedjira/parser/rss_feed_burner_entry_spec.rb +9 -7
  73. data/spec/feedjira/parser/rss_feed_burner_spec.rb +3 -1
  74. data/spec/feedjira/parser/rss_spec.rb +2 -0
  75. data/spec/feedjira/preprocessor_spec.rb +4 -2
  76. data/spec/feedjira_spec.rb +11 -0
  77. data/spec/sample_feeds.rb +4 -1
  78. data/spec/sample_feeds/a10.xml +72 -0
  79. data/spec/spec_helper.rb +3 -1
  80. metadata +13 -25
  81. data/Dangerfile +0 -1
@@ -1,36 +1,11 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2018-10-08 04:14:19 +0900 using RuboCop version 0.59.2.
3
+ # on 2020-09-02 20:02:06 UTC using RuboCop version 0.90.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 7
10
- # Cop supports --auto-correct.
11
- Layout/EmptyLineAfterGuardClause:
12
- Exclude:
13
- - 'lib/feedjira/date_time_utilities/date_time_epoch_parser.rb'
14
- - 'lib/feedjira/feed_utilities.rb'
15
- - 'lib/feedjira/parser/json_feed_item.rb'
16
- - 'lib/feedjira/parser/podlove_chapter.rb'
17
-
18
- # Offense count: 1
19
- # Cop supports --auto-correct.
20
- Performance/UnneededSort:
21
- Exclude:
22
- - 'lib/feedjira/feed_utilities.rb'
23
-
24
- # Offense count: 3
25
- # Configuration parameters: EnforcedStyle.
26
- # SupportedStyles: inline, group
27
- Style/AccessModifierDeclarations:
28
- Exclude:
29
- - 'lib/feedjira.rb'
30
- - 'lib/feedjira/parser/itunes_rss.rb'
31
-
32
- # Offense count: 1
33
- # Cop supports --auto-correct.
34
- Style/UnneededCondition:
35
- Exclude:
36
- - 'lib/feedjira/feed_utilities.rb'
9
+ # Offense count: 20
10
+ Style/Documentation:
11
+ Enabled: false
@@ -28,7 +28,6 @@ before_install:
28
28
 
29
29
  script:
30
30
  - bundle exec rake
31
- - bundle exec danger
32
31
 
33
32
  notifications:
34
33
  email: false
@@ -1,5 +1,10 @@
1
1
  # Feedjira Changelog
2
2
 
3
+ ## Unreleased
4
+
5
+ * Enhancements
6
+ * Add support for the `a10` namespace used in RSS 2.0 feeds generated by .NET applications. Currently `a10:link`, `a10:updated`, `a10:content` and `a10:name` are supported. [#440][] (@knu)
7
+
3
8
  ## 3.1.0
4
9
 
5
10
  * Breaking Changes
data/Gemfile CHANGED
@@ -1,12 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source "https://rubygems.org/"
2
4
 
3
5
  gemspec
4
6
 
5
7
  gem "pry"
6
- gem "rubocop", "~> 0.59.2"
8
+ gem "rubocop", "~> 0.90"
7
9
 
8
10
  group :test do
9
11
  gem "oga"
10
- gem "ox", platforms: [:mri, :rbx]
12
+ gem "ox", platforms: %i[mri rbx]
11
13
  gem "rake"
12
14
  end
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "rspec/core/rake_task"
2
4
  require "rubocop/rake_task"
3
5
  require "yard"
@@ -14,4 +16,4 @@ YARD::Rake::YardocTask.new do |t|
14
16
  t.files = ["lib/**/*.rb", "-", "LICENSE"]
15
17
  end
16
18
 
17
- task default: [:spec, :rubocop]
19
+ task default: %i[spec rubocop]
@@ -1,8 +1,7 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
2
 
3
3
  require File.expand_path("lib/feedjira/version", __dir__)
4
4
 
5
- # rubocop:disable Metrics/BlockLength
6
5
  Gem::Specification.new do |s|
7
6
  s.authors = [
8
7
  "Adam Hess",
@@ -11,10 +10,9 @@ Gem::Specification.new do |s|
11
10
  "Jon Allured",
12
11
  "Julien Kirch",
13
12
  "Michael Stock",
14
- "Paul Dix",
13
+ "Paul Dix"
15
14
  ]
16
- s.email = "feedjira@gmail.com"
17
- s.homepage = "http://feedjira.com"
15
+ s.homepage = "https://github.com/feedjira/feedjira"
18
16
  s.license = "MIT"
19
17
  s.name = "feedjira"
20
18
  s.platform = Gem::Platform::RUBY
@@ -22,9 +20,9 @@ Gem::Specification.new do |s|
22
20
  s.version = Feedjira::VERSION
23
21
 
24
22
  s.metadata = {
25
- "homepage_uri" => "http://feedjira.com",
23
+ "homepage_uri" => "http://feedjira.com",
26
24
  "source_code_uri" => "https://github.com/feedjira/feedjira",
27
- "changelog_uri" => "https://github.com/feedjira/feedjira/blob/master/CHANGELOG.md"
25
+ "changelog_uri" => "https://github.com/feedjira/feedjira/blob/master/CHANGELOG.md"
28
26
  }
29
27
 
30
28
  s.files = `git ls-files`.split("\n")
@@ -36,11 +34,9 @@ Gem::Specification.new do |s|
36
34
  s.add_dependency "loofah", ">= 2.3.1"
37
35
  s.add_dependency "sax-machine", ">= 1.0"
38
36
 
39
- s.add_development_dependency "danger"
40
- s.add_development_dependency "danger-commit_lint"
37
+ s.add_development_dependency "faraday"
41
38
  s.add_development_dependency "rspec"
42
39
  s.add_development_dependency "rubocop"
43
40
  s.add_development_dependency "vcr"
44
41
  s.add_development_dependency "yard"
45
42
  end
46
- # rubocop:enable Metrics/BlockLength
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "zlib"
2
4
  require "sax-machine"
3
5
  require "loofah"
@@ -10,7 +12,6 @@ require "feedjira/date_time_utilities/date_time_epoch_parser"
10
12
  require "feedjira/date_time_utilities/date_time_language_parser"
11
13
  require "feedjira/date_time_utilities/date_time_pattern_parser"
12
14
  require "feedjira/date_time_utilities"
13
- require "feedjira/date_time_utilities"
14
15
  require "feedjira/feed_entry_utilities"
15
16
  require "feedjira/feed_utilities"
16
17
  require "feedjira/feed"
@@ -64,7 +65,7 @@ module Feedjira
64
65
 
65
66
  parser.parse(xml, &block)
66
67
  end
67
- module_function :parse
68
+ module_function :parse # rubocop:disable Style/AccessModifierDeclarations
68
69
 
69
70
  # Find compatible parser for given XML
70
71
  #
@@ -76,5 +77,5 @@ module Feedjira
76
77
  start_of_doc = xml.slice(0, 2000)
77
78
  Feedjira.parsers.detect { |klass| klass.able_to_parse?(start_of_doc) }
78
79
  end
79
- module_function :parser_for_xml
80
+ module_function :parser_for_xml # rubocop:disable Style/AccessModifierDeclarations
80
81
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Feedjira::Configuration
2
4
  module Feedjira
3
5
  # Provides global configuration options for Feedjira
@@ -10,7 +12,7 @@ module Feedjira
10
12
  attr_accessor(
11
13
  :logger,
12
14
  :parsers,
13
- :strip_whitespace,
15
+ :strip_whitespace
14
16
  )
15
17
 
16
18
  # Modify Feedjira's current configuration
@@ -48,7 +50,7 @@ module Feedjira
48
50
 
49
51
  # @private
50
52
  def default_logger
51
- Logger.new(STDOUT).tap do |logger|
53
+ Logger.new($stdout).tap do |logger|
52
54
  logger.progname = "Feedjira"
53
55
  logger.level = Logger::WARN
54
56
  end
@@ -65,7 +67,7 @@ module Feedjira
65
67
  Feedjira::Parser::Atom,
66
68
  Feedjira::Parser::ITunesRSS,
67
69
  Feedjira::Parser::RSS,
68
- Feedjira::Parser::JSONFeed,
70
+ Feedjira::Parser::JSONFeed
69
71
  ]
70
72
  end
71
73
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "feedjira/core_ext/time"
2
4
  require "feedjira/core_ext/date"
3
5
  require "feedjira/core_ext/string"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Date code pulled and adapted from:
2
4
  # Ruby Cookbook by Lucas Carlson and Leonard Richardson
3
5
  # Published by O'Reilly
@@ -15,6 +17,6 @@ class Date
15
17
 
16
18
  def feed_utils_to_time(dest, method)
17
19
  Time.send(method, dest.year, dest.month, dest.day, dest.hour, dest.min,
18
- dest.sec, dest.zone)
20
+ dest.sec, dest.zone)
19
21
  end
20
22
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class String
2
4
  def sanitize!
3
5
  replace(sanitize)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "time"
2
4
  require "date"
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Feedjira
2
4
  module DateTimeUtilities
3
5
  # This is our date parsing heuristic.
@@ -6,20 +8,18 @@ module Feedjira
6
8
  DateTimePatternParser,
7
9
  DateTimeLanguageParser,
8
10
  DateTimeEpochParser,
9
- DateTime,
11
+ DateTime
10
12
  ].freeze
11
13
 
12
14
  # Parse the given string starting with the most common parser (default ruby)
13
15
  # and going over all other available parsers
14
16
  def parse_datetime(string)
15
17
  res = DATE_PARSERS.detect do |parser|
16
- begin
17
- return parser.parse(string).feed_utils_to_gm_time
18
- rescue StandardError => e
19
- Feedjira.logger.debug { "Failed to parse date #{string}" }
20
- Feedjira.logger.debug(e)
21
- nil
22
- end
18
+ return parser.parse(string).feed_utils_to_gm_time
19
+ rescue StandardError => e
20
+ Feedjira.logger.debug { "Failed to parse date #{string}" }
21
+ Feedjira.logger.debug(e)
22
+ nil
23
23
  end
24
24
 
25
25
  Feedjira.logger.warn { "Failed to parse date #{string}" } if res.nil?
@@ -1,9 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Feedjira
2
4
  module DateTimeUtilities
3
5
  class DateTimeEpochParser
4
6
  def self.parse(string)
5
7
  epoch_time = string.to_i
6
8
  return Time.at(epoch_time).to_datetime if epoch_time.to_s == string
9
+
7
10
  raise "#{string} is not a valid epoch time"
8
11
  end
9
12
  end
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Feedjira
2
4
  module DateTimeUtilities
3
5
  class DateTimeLanguageParser
4
6
  MONTHS_ENGLISH =
5
- %w(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec).freeze
7
+ %w[Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec].freeze
6
8
  MONTHS_SPANISH =
7
- %w(Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic).freeze
9
+ %w[Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic].freeze
8
10
 
9
11
  def self.parse(string)
10
12
  DateTime.parse(translate(string))
@@ -1,21 +1,21 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Feedjira
2
4
  module DateTimeUtilities
3
5
  class DateTimePatternParser
4
6
  # Japanese Symbols are required for strange Date Strings like
5
7
  # '水, 31 8 2016 07:37:00 PDT'
6
- JAPANESE_SYMBOLS = %w(日 月 火 水 木 金 土).freeze
8
+ JAPANESE_SYMBOLS = %w[日 月 火 水 木 金 土].freeze
7
9
  PATTERNS = ["%m/%d/%Y %T %p", "%d %m %Y %T %Z"].freeze
8
10
 
9
11
  def self.parse(string)
10
12
  PATTERNS.each do |p|
11
- begin
12
- datetime = DateTime.strptime(prepare(string), p)
13
- return datetime
14
- rescue StandardError => e
15
- Feedjira.logger.debug("Failed to parse date #{string}")
16
- Feedjira.logger.debug(e)
17
- nil
18
- end
13
+ datetime = DateTime.strptime(prepare(string), p)
14
+ return datetime
15
+ rescue StandardError => e
16
+ Feedjira.logger.debug("Failed to parse date #{string}")
17
+ Feedjira.logger.debug(e)
18
+ nil
19
19
  end
20
20
  raise "No pattern matched #{string}"
21
21
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Feedjira
2
4
  class Feed
3
5
  class << self
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Feedjira
2
4
  module FeedEntryUtilities
3
5
  include Enumerable
@@ -39,9 +41,9 @@ module Feedjira
39
41
  end
40
42
 
41
43
  def sanitize!
42
- %w(title author summary content image).each do |name|
44
+ %w[title author summary content image].each do |name|
43
45
  if respond_to?(name) && send(name).respond_to?(:sanitize!)
44
- send(name).send :sanitize!
46
+ send(name).send(:sanitize!)
45
47
  end
46
48
  end
47
49
  end
@@ -51,7 +53,7 @@ module Feedjira
51
53
  def each
52
54
  @rss_fields ||= instance_variables.map do |ivar|
53
55
  ivar.to_s.sub("@", "")
54
- end.select do |field|
56
+ end.select do |field| # rubocop:disable Style/MultilineBlockChain
55
57
  # select callable (public) methods only
56
58
  respond_to?(field)
57
59
  end
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Feedjira
2
4
  module FeedUtilities
3
- UPDATABLE_ATTRIBUTES = %w(title feed_url url last_modified etag).freeze
5
+ UPDATABLE_ATTRIBUTES = %w[title feed_url url last_modified etag].freeze
4
6
 
5
7
  attr_writer :new_entries, :updated, :last_modified
6
8
  attr_accessor :etag
@@ -41,7 +43,7 @@ module Feedjira
41
43
  def last_modified
42
44
  @last_modified ||= begin
43
45
  published = entries.reject { |e| e.published.nil? }
44
- entry = published.sort_by { |e| e.published if e.published }.last
46
+ entry = published.max_by(&:published)
45
47
  entry ? entry.published : nil
46
48
  end
47
49
  end
@@ -100,6 +102,7 @@ module Feedjira
100
102
 
101
103
  feed.entries.each do |entry|
102
104
  break unless new_entry?(entry, latest_entry)
105
+
103
106
  found_new_entries << entry
104
107
  end
105
108
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Feedjira
2
4
  module Parser
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Feedjira
2
4
  module Parser
3
5
  # Parser for dealing with Atom feeds.
@@ -14,7 +16,7 @@ module Feedjira
14
16
  elements :entry, as: :entries, class: AtomEntry
15
17
 
16
18
  def self.able_to_parse?(xml)
17
- %r{\<feed[^\>]+xmlns\s?=\s?[\"\'](http://www\.w3\.org/2005/Atom|http://purl\.org/atom/ns\#)[\"\'][^\>]*\>} =~ xml # rubocop:disable Metrics/LineLength
19
+ %r{<feed[^>]+xmlns\s?=\s?["'](http://www\.w3\.org/2005/Atom|http://purl\.org/atom/ns\#)["'][^>]*>} =~ xml
18
20
  end
19
21
 
20
22
  def url
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Feedjira
2
4
  module Parser
3
5
  # Parser for dealing with Atom feed entries.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Feedjira
2
4
  module Parser
3
5
  # Parser for dealing with Feedburner Atom feeds.
@@ -10,7 +12,7 @@ module Feedjira
10
12
  element :link, as: :url_text_html, value: :href,
11
13
  with: { type: "text/html" }
12
14
  element :link, as: :url_notype, value: :href, with: { type: nil }
13
- element :link, as: :feed_url_link, value: :href, with: { type: "application/atom+xml" } # rubocop:disable Metrics/LineLength
15
+ element :link, as: :feed_url_link, value: :href, with: { type: "application/atom+xml" }
14
16
  element :"atom10:link", as: :feed_url_atom10_link, value: :href,
15
17
  with: { type: "application/atom+xml" }
16
18
  elements :"atom10:link", as: :hubs, value: :href, with: { rel: "hub" }
@@ -19,7 +21,7 @@ module Feedjira
19
21
  attr_writer :url, :feed_url
20
22
 
21
23
  def self.able_to_parse?(xml)
22
- ((/<feed/ =~ xml) && (/Atom/ =~ xml) && (/feedburner/ =~ xml) && !(/\<rss|\<rdf/ =~ xml)) || false # rubocop:disable Metrics/LineLength
24
+ ((/<feed/ =~ xml) && (/Atom/ =~ xml) && (/feedburner/ =~ xml) && !(/<rss|<rdf/ =~ xml)) || false
23
25
  end
24
26
 
25
27
  # Feed url is <link> with type="text/html" if present,
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Feedjira
2
4
  module Parser
3
5
  # Parser for dealing with Feedburner Atom feed entries.
@@ -7,9 +9,7 @@ module Feedjira
7
9
  include AtomEntryUtilities
8
10
 
9
11
  element :"feedburner:origLink", as: :orig_link
10
- # rubocop:disable Style/AccessModifierDeclarations
11
12
  private :orig_link
12
- # rubocop:enable Style/AccessModifierDeclarations
13
13
 
14
14
  element :"media:thumbnail", as: :image, value: :url
15
15
  element :"media:content", as: :image, value: :url