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,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "spec_helper"
2
4
 
3
5
  describe Feedjira::Parser::RSS do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "spec_helper"
2
4
 
3
5
  describe Feedjira::Preprocessor do
@@ -21,9 +23,9 @@ describe Feedjira::Preprocessor do
21
23
  end
22
24
 
23
25
  it "leaves escaped html within pre tag" do
24
- processor = Feedjira::Preprocessor.new(sample_atom_xhtml_with_escpaed_html_in_pre_tag_feed) # rubocop:disable Metrics/LineLength
26
+ processor = Feedjira::Preprocessor.new(sample_atom_xhtml_with_escpaed_html_in_pre_tag_feed)
25
27
  escaped = processor.to_xml
26
- expected_pre_tag = " <pre><b>test<b></pre>" # rubocop:disable Metrics/LineLength
28
+ expected_pre_tag = " <pre><b>test<b></pre>"
27
29
  expect(escaped.split("\n")[7]).to eq(expected_pre_tag)
28
30
  end
29
31
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "spec_helper"
2
4
 
3
5
  RSpec.describe Feedjira do
@@ -89,6 +91,15 @@ RSpec.describe Feedjira do
89
91
  expect(feed.entries.first.published).to eq published
90
92
  expect(feed.entries.size).to eq 20
91
93
  end
94
+
95
+ it "should parse an RSS feed with an a10 namespace" do
96
+ feed = Feedjira.parse(sample_rss_feed_with_a10_namespace)
97
+ expect(feed.url).to eq "http://www.example.com/"
98
+ expect(feed.entries.first.url).to eq "http://www.example.com/5"
99
+ expect(feed.entries.first.updated).to eq Time.parse_safely("2020-05-14T10:00:18Z")
100
+ expect(feed.entries.first.author).to eq "John Doe"
101
+ expect(feed.entries.size).to eq 5
102
+ end
92
103
  end
93
104
 
94
105
  describe ".parser_for_xml" do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SampleFeeds
2
4
  FEEDS = {
3
5
  sample_atom_feed: "AmazonWebServicesBlog.xml",
@@ -29,7 +31,8 @@ module SampleFeeds
29
31
  sample_json_feed: "json_feed.json",
30
32
  sample_rss_feed_huffpost_ca: "HuffPostCanada.xml",
31
33
  sample_invalid_date_format_feed: "InvalidDateFormat.xml",
32
- sample_rss_feed_permalinks: "Permalinks.xml"
34
+ sample_rss_feed_permalinks: "Permalinks.xml",
35
+ sample_rss_feed_with_a10_namespace: "a10.xml"
33
36
  }.freeze
34
37
 
35
38
  FEEDS.each do |method, filename|
@@ -0,0 +1,72 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <rss xmlns:a10="http://www.w3.org/2005/Atom" version="2.0">
3
+ <channel>
4
+ <title>Some Title</title>
5
+ <description>Some Description</description>
6
+ <lastBuildDate>Thu, 14 May 2020 10:00:18 Z</lastBuildDate>
7
+ <category>Some Category</category>
8
+ <a10:link href="http://www.example.com/" />
9
+ <pubDate>Sat, 16 May 2020 08:50:40 GMT</pubDate>
10
+ <item>
11
+ <title>Title 5</title>
12
+ <description>Description 5</description>
13
+ <pubDate>Thu, 14 May 2020 10:00:18 Z</pubDate>
14
+ <a10:link href="http://www.example.com/5" />
15
+ <a10:author>
16
+ <a10:name>John Doe</a10:name>
17
+ <a10:uri>http://www.example.com/</a10:uri>
18
+ <a10:email>john.doe@example.com</a10:email>
19
+ </a10:author>
20
+ <a10:updated>2020-05-14T10:00:18Z</a10:updated>
21
+ </item>
22
+ <item>
23
+ <title>Title 4</title>
24
+ <description>Description 4</description>
25
+ <pubDate>Wed, 13 May 2020 10:17:57 Z</pubDate>
26
+ <a10:link href="http://www.example.com/4" />
27
+ <a10:author>
28
+ <a10:name>John Doe</a10:name>
29
+ <a10:uri>http://www.example.com/</a10:uri>
30
+ <a10:email>john.doe@example.com</a10:email>
31
+ </a10:author>
32
+ <a10:updated>2020-05-13T10:17:57Z</a10:updated>
33
+ </item>
34
+ <item>
35
+ <title>Title 3</title>
36
+ <description>Dfescription 3</description>
37
+ <pubDate>Tue, 12 May 2020 15:00:00 Z</pubDate>
38
+ <a10:link href="http://www.example.com/3" />
39
+ <a10:author>
40
+ <a10:name>John Doe</a10:name>
41
+ <a10:uri>http://www.example.com/</a10:uri>
42
+ <a10:email>john.doe@example.com</a10:email>
43
+ </a10:author>
44
+ <a10:updated>2020-05-12T15:00:00Z</a10:updated>
45
+ </item>
46
+ <item>
47
+ <title>Title 2</title>
48
+ <description>Description 2</description>
49
+ <pubDate>Tue, 12 May 2020 07:52:36 Z</pubDate>
50
+ <a10:link href="http://www.example.com/2" />
51
+ <a10:author>
52
+ <a10:name>John Doe</a10:name>
53
+ <a10:uri>http://www.example.com/</a10:uri>
54
+ <a10:email>john.doe@example.com</a10:email>
55
+ </a10:author>
56
+ <a10:updated>2020-05-12T07:52:36Z</a10:updated>
57
+ </item>
58
+ <item>
59
+ <title>Title 1</title>
60
+ <description>Description 1</description>
61
+ <pubDate>Thu, 07 May 2020 07:36:53 Z</pubDate>
62
+ <a10:link href="http://www.example.com/1" />
63
+ <a10:author>
64
+ <a10:name>John Doe</a10:name>
65
+ <a10:uri>http://www.example.com/</a10:uri>
66
+ <a10:email>john.doe@example.com</a10:email>
67
+ </a10:author>
68
+ <a10:updated>2020-05-07T07:36:53Z</a10:updated>
69
+ </item>
70
+ </channel>
71
+ </rss>
72
+
@@ -1,4 +1,6 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../lib/feedjira")
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path("#{File.dirname(__FILE__)}/../lib/feedjira")
2
4
  require "sample_feeds"
3
5
  require "vcr"
4
6
 
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: 3.1.1
4
+ version: 3.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Hess
@@ -11,10 +11,10 @@ authors:
11
11
  - Julien Kirch
12
12
  - Michael Stock
13
13
  - Paul Dix
14
- autorequire:
14
+ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2020-02-06 00:00:00.000000000 Z
17
+ date: 2020-11-22 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: loofah
@@ -45,21 +45,7 @@ dependencies:
45
45
  - !ruby/object:Gem::Version
46
46
  version: '1.0'
47
47
  - !ruby/object:Gem::Dependency
48
- name: danger
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
- - !ruby/object:Gem::Dependency
62
- name: danger-commit_lint
48
+ name: faraday
63
49
  requirement: !ruby/object:Gem::Requirement
64
50
  requirements:
65
51
  - - ">="
@@ -128,12 +114,13 @@ dependencies:
128
114
  - - ">="
129
115
  - !ruby/object:Gem::Version
130
116
  version: '0'
131
- description:
132
- email: feedjira@gmail.com
117
+ description:
118
+ email:
133
119
  executables: []
134
120
  extensions: []
135
121
  extra_rdoc_files: []
136
122
  files:
123
+ - ".github/ISSUE_TEMPLATE/feed-parsing.md"
137
124
  - ".gitignore"
138
125
  - ".rspec"
139
126
  - ".rubocop.yml"
@@ -141,7 +128,6 @@ files:
141
128
  - ".travis.yml"
142
129
  - CHANGELOG.md
143
130
  - CODE_OF_CONDUCT.md
144
- - Dangerfile
145
131
  - Gemfile
146
132
  - LICENSE
147
133
  - README.md
@@ -246,6 +232,7 @@ files:
246
232
  - spec/sample_feeds/TenderLovemakingFirstEntry.xml
247
233
  - spec/sample_feeds/TrotterCashionHome.xml
248
234
  - spec/sample_feeds/TypePadNews.xml
235
+ - spec/sample_feeds/a10.xml
249
236
  - spec/sample_feeds/atom_with_link_tag_for_url_unmarked.xml
250
237
  - spec/sample_feeds/google_alerts_atom.xml
251
238
  - spec/sample_feeds/itunes.xml
@@ -253,14 +240,14 @@ files:
253
240
  - spec/sample_feeds/pet_atom.xml
254
241
  - spec/sample_feeds/youtube_atom.xml
255
242
  - spec/spec_helper.rb
256
- homepage: http://feedjira.com
243
+ homepage: https://github.com/feedjira/feedjira
257
244
  licenses:
258
245
  - MIT
259
246
  metadata:
260
247
  homepage_uri: http://feedjira.com
261
248
  source_code_uri: https://github.com/feedjira/feedjira
262
249
  changelog_uri: https://github.com/feedjira/feedjira/blob/master/CHANGELOG.md
263
- post_install_message:
250
+ post_install_message:
264
251
  rdoc_options: []
265
252
  require_paths:
266
253
  - lib
@@ -275,8 +262,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
275
262
  - !ruby/object:Gem::Version
276
263
  version: '0'
277
264
  requirements: []
278
- rubygems_version: 3.1.2
279
- signing_key:
265
+ rubygems_version: 3.2.0.rc.1
266
+ signing_key:
280
267
  specification_version: 4
281
268
  summary: A feed parsing library
282
269
  test_files:
@@ -338,6 +325,7 @@ test_files:
338
325
  - spec/sample_feeds/TenderLovemakingFirstEntry.xml
339
326
  - spec/sample_feeds/TrotterCashionHome.xml
340
327
  - spec/sample_feeds/TypePadNews.xml
328
+ - spec/sample_feeds/a10.xml
341
329
  - spec/sample_feeds/atom_with_link_tag_for_url_unmarked.xml
342
330
  - spec/sample_feeds/google_alerts_atom.xml
343
331
  - spec/sample_feeds/itunes.xml
data/Dangerfile DELETED
@@ -1 +0,0 @@
1
- # commit_lint.check(warn: :all)