feedjira 4.0.1 → 4.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e7c43633bb85f7aa16a1930ba863d404bee83de5365676c1df4600df5640d4d6
4
- data.tar.gz: e910be45a7e47e55cec3d4d09e219d6d245834da7360d22338c6380e1bad42ac
3
+ metadata.gz: cb65081b36daffe6b574820cdfba4b0e444854e8e72b3b6f6f82f2efc80befd2
4
+ data.tar.gz: 14d58fb668a54606e0b03e0f8f9a6748681a562902955120937f0cb6cd62c0b7
5
5
  SHA512:
6
- metadata.gz: a1fbf835d1ae58a7a542fc37362e7c8d1fa9ab5ec435075da34f7a386aac5d0a2acda1e8d24f4138b50ca410582e5fec48409ecf6bcdf93cc2a6f8f6dee55882
7
- data.tar.gz: 0ec37861fc3fac82ce93a41df4b84a3800a3a74090f17b5b6322e35c1189e63d83671d0deeca6847bb25803118f9e406c067b1e1363f863edce788b9b985130d
6
+ metadata.gz: 39be37b94a2c07856bee078fa641015ce78c19336797dbf1403d731db27b6c2ab44ad834e2b691c63b9d473462e1794b228e949e7b87d7647a04c198ab514274
7
+ data.tar.gz: 0c9237598fd8d7cea5be2201169925d30983298b02612d2812fd1ab196337be4b5a5054eb5f58430b8a4f3bfe6465f4a8018064539bcb93779d12802d9371248
data/.rubocop.yml CHANGED
@@ -60,3 +60,6 @@ RSpec/RepeatedExample:
60
60
  Enabled: false
61
61
 
62
62
  Style/Copyright: { Enabled: false }
63
+
64
+ Style/HashLookupMethod:
65
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Feedjira Changelog
2
2
 
3
+ ## 4.0.2
4
+
5
+ * Fix ITunesRSS.able_to_parse? false positive on CDATA content (#570)
6
+
3
7
  ## 4.0.1
4
8
 
5
9
  * Amend Atom parser able_to_parse regex to also match the HTTPS variant of the xmlns attribute value (#558)
data/Gemfile CHANGED
@@ -4,13 +4,13 @@ source "https://rubygems.org/"
4
4
 
5
5
  gemspec
6
6
 
7
- gem "faraday", "~> 2.13.4"
8
- gem "pry", "~> 0.15.0"
7
+ gem "faraday", "~> 2.14.0"
8
+ gem "pry", "~> 0.16.0"
9
9
  gem "rspec", "~> 3.13.0"
10
- gem "rubocop", "~> 1.80.0"
11
- gem "rubocop-performance", "~> 1.25.0"
10
+ gem "rubocop", "~> 1.86.0"
11
+ gem "rubocop-performance", "~> 1.26.0"
12
12
  gem "rubocop-rake", "~> 0.7.1"
13
- gem "rubocop-rspec", "~> 3.6.0"
13
+ gem "rubocop-rspec", "~> 3.9.0"
14
14
  gem "simplecov", "~> 0.22.0"
15
15
  gem "yard", "~> 0.9.34"
16
16
 
@@ -15,7 +15,7 @@ module Feedjira
15
15
  elements :entry, as: :entries, class: AtomGoogleAlertsEntry
16
16
 
17
17
  def self.able_to_parse?(xml)
18
- Atom.able_to_parse?(xml) && (%r{<id>tag:google\.com,2005:[^<]+/com\.google/alerts/} === xml) # rubocop:disable Style/CaseEquality
18
+ Atom.able_to_parse?(xml) && (%r{<id>tag:google\.com,2005:[^<]+/com\.google/alerts/} === xml)
19
19
  end
20
20
 
21
21
  def self.preprocess(xml)
@@ -63,7 +63,8 @@ module Feedjira
63
63
  elements :item, as: :entries, class: ITunesRSSItem
64
64
 
65
65
  def self.able_to_parse?(xml)
66
- %r{xmlns:itunes\s?=\s?["']http://www\.itunes\.com/dtds/podcast-1\.0\.dtd["']}i =~ xml
66
+ xml_without_cdata = xml.gsub(/<!\[CDATA\[.*?\]\]>/m, "")
67
+ %r{xmlns:itunes\s?=\s?["']http://www\.itunes\.com/dtds/podcast-1\.0\.dtd["']}i =~ xml_without_cdata
67
68
  end
68
69
  end
69
70
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Feedjira
4
- VERSION = "4.0.1"
4
+ VERSION = "4.0.2"
5
5
  end
data/lib/feedjira.rb CHANGED
@@ -44,7 +44,8 @@ require_relative "feedjira/parser/json_feed_item"
44
44
 
45
45
  # Feedjira
46
46
  module Feedjira
47
- NoParserAvailable = Class.new(StandardError)
47
+ class NoParserAvailable < StandardError
48
+ end
48
49
 
49
50
  extend Configuration
50
51
 
@@ -24,6 +24,10 @@ module Feedjira
24
24
  it "returns false for an rss feedburner feed" do
25
25
  expect(ITunesRSS).not_to be_able_to_parse(sample_rss_feed_burner_feed)
26
26
  end
27
+
28
+ it "returns false for an atom feed with xmlns:itunes inside CDATA" do
29
+ expect(ITunesRSS).not_to be_able_to_parse(sample_atom_with_itunes_in_cdata)
30
+ end
27
31
  end
28
32
 
29
33
  describe "parsing" do
@@ -155,6 +155,12 @@ RSpec.describe Feedjira do
155
155
  expect(actual_parser).to eq described_class::Parser::ITunesRSS
156
156
  end
157
157
 
158
+ it "with an atom feed containing xmlns:itunes in CDATA it returns the Atom parser" do
159
+ xml = sample_atom_with_itunes_in_cdata
160
+ actual_parser = described_class.parser_for_xml(xml)
161
+ expect(actual_parser).to eq described_class::Parser::Atom
162
+ end
163
+
158
164
  context "when parsers are configured" do
159
165
  it "does not use default parsers" do
160
166
  xml = "Atom asdf"
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <feed xmlns="http://www.w3.org/2005/Atom">
3
+ <title>Test Blog</title>
4
+ <link rel="alternate" href="https://example.com/" />
5
+ <id>tag:example.com,2024:blog</id>
6
+ <updated>2024-01-01T00:00:00Z</updated>
7
+ <entry>
8
+ <title>How to set up a podcast RSS feed</title>
9
+ <link href="https://example.com/post/1" />
10
+ <id>tag:example.com,2024:post-1</id>
11
+ <published>2024-01-01T00:00:00Z</published>
12
+ <content type="html"><![CDATA[
13
+ <p>Here is an example RSS feed:</p>
14
+ <pre><code>&lt;rss version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"&gt;</code></pre>
15
+ ]]></content>
16
+ </entry>
17
+ </feed>
data/spec/sample_feeds.rb CHANGED
@@ -37,7 +37,8 @@ module SampleFeeds
37
37
  sample_invalid_date_format_feed: "InvalidDateFormat.xml",
38
38
  sample_rss_feed_permalinks: "Permalinks.xml",
39
39
  sample_rss_feed_with_a10_namespace: "a10.xml",
40
- sample_rss_feed_with_comments: "RSSWithComments.xml"
40
+ sample_rss_feed_with_comments: "RSSWithComments.xml",
41
+ sample_atom_with_itunes_in_cdata: "AtomWithITunesInCDATA.xml"
41
42
  }.freeze
42
43
 
43
44
  FEEDS.each do |method, filename|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: feedjira
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.1
4
+ version: 4.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Hess
@@ -164,6 +164,7 @@ files:
164
164
  - spec/sample_feeds/AmazonWebServicesBlogFirstEntryContent.xml
165
165
  - spec/sample_feeds/AtomEscapedHTMLInPreTag.xml
166
166
  - spec/sample_feeds/AtomFeedWithSpacesAroundEquals.xml
167
+ - spec/sample_feeds/AtomWithITunesInCDATA.xml
167
168
  - spec/sample_feeds/CRE.xml
168
169
  - spec/sample_feeds/DuplicateContentAtomFeed.xml
169
170
  - spec/sample_feeds/FeedBurnerUrlNoAlternate.xml
@@ -226,7 +227,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
226
227
  - !ruby/object:Gem::Version
227
228
  version: '0'
228
229
  requirements: []
229
- rubygems_version: 3.6.9
230
+ rubygems_version: 4.0.10
230
231
  specification_version: 4
231
232
  summary: A feed parsing library
232
233
  test_files: []