feedjira 3.1.1 → 3.1.2

Sign up to get free protection for your applications and to get access to all the features.
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)