feedjira 3.2.1 → 3.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +17 -0
  3. data/.github/workflows/ruby.yml +2 -2
  4. data/.gitignore +1 -0
  5. data/.rubocop.yml +1 -7
  6. data/.rubocop_todo.yml +28 -4
  7. data/CHANGELOG.md +17 -0
  8. data/Gemfile +13 -3
  9. data/README.md +3 -4
  10. data/feedjira.gemspec +4 -14
  11. data/lib/feedjira/configuration.rb +1 -1
  12. data/lib/feedjira/core_ext/date.rb +3 -6
  13. data/lib/feedjira/core_ext/time.rb +3 -3
  14. data/lib/feedjira/feed_entry_utilities.rb +4 -5
  15. data/lib/feedjira/feed_utilities.rb +3 -7
  16. data/lib/feedjira/parser/json_feed.rb +5 -2
  17. data/lib/feedjira/rss_entry_utilities.rb +5 -1
  18. data/lib/feedjira/version.rb +1 -1
  19. data/lib/feedjira.rb +0 -4
  20. data/spec/feedjira/core_ext/time_spec.rb +57 -0
  21. data/spec/feedjira/feed_spec.rb +39 -11
  22. data/spec/feedjira/feed_utilities_entry_spec.rb +1 -1
  23. data/spec/feedjira/feed_utilities_spec.rb +7 -5
  24. data/spec/feedjira/parser/json_feed_spec.rb +13 -1
  25. data/spec/feedjira/parser/rss_entry_spec.rb +7 -1
  26. data/spec/feedjira/parser/rss_feed_burner_entry_spec.rb +1 -0
  27. data/spec/feedjira/parser/rss_spec.rb +1 -1
  28. data/spec/feedjira_spec.rb +11 -1
  29. data/spec/sample_feeds/RSSWithComments.xml +277 -0
  30. data/spec/sample_feeds/itunes_feedburner.xml +117 -0
  31. data/spec/sample_feeds/json_feed.json +2 -0
  32. data/spec/sample_feeds.rb +3 -1
  33. data/spec/spec_helper.rb +3 -0
  34. data/spec/support/coverage.rb +10 -0
  35. metadata +22 -190
  36. data/lib/feedjira/date_time_utilities/date_time_epoch_parser.rb +0 -14
  37. data/lib/feedjira/date_time_utilities/date_time_language_parser.rb +0 -24
  38. data/lib/feedjira/date_time_utilities/date_time_pattern_parser.rb +0 -30
  39. data/lib/feedjira/date_time_utilities.rb +0 -30
  40. data/spec/feedjira/feed_utilities_date_time_spec.rb +0 -49
@@ -57,6 +57,16 @@ RSpec.describe Feedjira do
57
57
  expect(feed.entries.size).to eq 3
58
58
  end
59
59
 
60
+ it "parses an itunes feedburner feed" do
61
+ feed = described_class.parse(sample_itunes_feedburner_feed)
62
+ expect(feed.title).to eq "Welcome to Night Vale"
63
+ published = Time.parse_safely "2023-09-22 16:30:15 UTC"
64
+ expect(feed.entries.first.published).to eq published
65
+ expect(feed.entries.size).to eq 3
66
+ url = "https://www.podtrac.com/pts/redirect.mp3/dovetail.prxu.org/_/126/e3dafc45-a202-42d0-a55b-216e733a2d7a/2023_09_17_BTS_Episode_EXCERPT_v2.mp3"
67
+ expect(feed.entries.first.enclosure_url).to eq url
68
+ end
69
+
60
70
  it "with nested dc:identifier it does not overwrite entry_id" do
61
71
  feed = described_class.parse(sample_rss_feed_huffpost_ca)
62
72
  expect(feed.title.strip).to eq "HuffPost Canada - Athena2 - All Posts"
@@ -66,7 +76,7 @@ RSpec.describe Feedjira do
66
76
  end
67
77
 
68
78
  it "does not fail if multiple published dates exist and some are unparseable" do
69
- expect(described_class.logger).to receive(:warn).twice
79
+ expect(described_class.logger).to receive(:debug).twice
70
80
 
71
81
  feed = described_class.parse(sample_invalid_date_format_feed)
72
82
  expect(feed.title).to eq "Invalid date format feed"
@@ -0,0 +1,277 @@
1
+ <rss version="2.0">
2
+ <channel>
3
+ <title>Hacker News</title>
4
+ <link>https://news.ycombinator.com/</link>
5
+ <description>Links for the intellectually curious, ranked by readers.</description>
6
+ <item>
7
+ <title>AWS Lambda Function URLs: Built-In HTTPS Endpoints for Lambda</title>
8
+ <link>https://aws.amazon.com/blogs/aws/announcing-aws-lambda-function-urls-built-in-https-endpoints-for-single-function-microservices/</link>
9
+ <pubDate>Wed, 6 Apr 2022 21:07:47 +0000</pubDate>
10
+ <comments>https://news.ycombinator.com/item?id=30937433</comments>
11
+ <description>
12
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30937433">Comments</a>]]>
13
+ </description>
14
+ </item>
15
+ <item>
16
+ <title>Dall-E 2</title>
17
+ <link>https://openai.com/dall-e-2/</link>
18
+ <pubDate>Wed, 6 Apr 2022 14:09:04 +0000</pubDate>
19
+ <comments>https://news.ycombinator.com/item?id=30932095</comments>
20
+ <description>
21
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30932095">Comments</a>]]>
22
+ </description>
23
+ </item>
24
+ <item>
25
+ <title>Twitter Bluesky: A Self-Authenticating Social Protocol</title>
26
+ <link>https://blueskyweb.xyz/blog/3-6-2022-a-self-authenticating-social-protocol</link>
27
+ <pubDate>Wed, 6 Apr 2022 21:23:54 +0000</pubDate>
28
+ <comments>https://news.ycombinator.com/item?id=30937578</comments>
29
+ <description>
30
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30937578">Comments</a>]]>
31
+ </description>
32
+ </item>
33
+ <item>
34
+ <title>The existence of true one-way functions depends on Kolmogorov complexity</title>
35
+ <link>https://www.quantamagazine.org/researchers-identify-master-problem-underlying-all-cryptography-20220406/</link>
36
+ <pubDate>Wed, 6 Apr 2022 17:01:46 +0000</pubDate>
37
+ <comments>https://news.ycombinator.com/item?id=30934721</comments>
38
+ <description>
39
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30934721">Comments</a>]]>
40
+ </description>
41
+ </item>
42
+ <item>
43
+ <title>You can do a lot with an empty file</title>
44
+ <link>https://rachelbythebay.com/w/2022/04/06/text/</link>
45
+ <pubDate>Wed, 6 Apr 2022 19:16:37 +0000</pubDate>
46
+ <comments>https://news.ycombinator.com/item?id=30936333</comments>
47
+ <description>
48
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30936333">Comments</a>]]>
49
+ </description>
50
+ </item>
51
+ <item>
52
+ <title>λ-2D: An exploration of drawing as programming language</title>
53
+ <link>https://www.media.mit.edu/projects/2d-an-exploration-of-drawing-as-programming-language-featuring-ideas-from-lambda-calculus/overview/</link>
54
+ <pubDate>Wed, 6 Apr 2022 14:44:41 +0000</pubDate>
55
+ <comments>https://news.ycombinator.com/item?id=30932552</comments>
56
+ <description>
57
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30932552">Comments</a>]]>
58
+ </description>
59
+ </item>
60
+ <item>
61
+ <title>Your competitor wrote the RFP you&#x27;re bidding on</title>
62
+ <link>https://www.sofuckingagile.com/blog/your-competitor-wrote-the-rfp-you-are-bidding-on</link>
63
+ <pubDate>Wed, 6 Apr 2022 14:48:40 +0000</pubDate>
64
+ <comments>https://news.ycombinator.com/item?id=30932596</comments>
65
+ <description>
66
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30932596">Comments</a>]]>
67
+ </description>
68
+ </item>
69
+ <item>
70
+ <title>Inside London&#x27;s first Ketamine therapy clinic</title>
71
+ <link>https://www.leafie.co.uk/articles/inside-londons-first-ketamine-therapy-clinic/</link>
72
+ <pubDate>Wed, 6 Apr 2022 22:08:36 +0000</pubDate>
73
+ <comments>https://news.ycombinator.com/item?id=30938074</comments>
74
+ <description>
75
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30938074">Comments</a>]]>
76
+ </description>
77
+ </item>
78
+ <item>
79
+ <title>Smarking (YC W15) is hiring staff and engineers to digitize the parking industry</title>
80
+ <link>https://jobs.lever.co/smarking/01b7a4c5-28ce-4a4c-9c88-d4cad6c01c76</link>
81
+ <pubDate>Wed, 6 Apr 2022 21:00:55 +0000</pubDate>
82
+ <comments>https://news.ycombinator.com/item?id=30937371</comments>
83
+ <description>
84
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30937371">Comments</a>]]>
85
+ </description>
86
+ </item>
87
+ <item>
88
+ <title>Ask HN: Share your personal site</title>
89
+ <link>https://news.ycombinator.com/item?id=30934529</link>
90
+ <pubDate>Wed, 6 Apr 2022 16:48:33 +0000</pubDate>
91
+ <comments>https://news.ycombinator.com/item?id=30934529</comments>
92
+ <description>
93
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30934529">Comments</a>]]>
94
+ </description>
95
+ </item>
96
+ <item>
97
+ <title>The State of Fortran</title>
98
+ <link>https://arxiv.org/abs/2203.15110</link>
99
+ <pubDate>Wed, 6 Apr 2022 18:20:19 +0000</pubDate>
100
+ <comments>https://news.ycombinator.com/item?id=30935633</comments>
101
+ <description>
102
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30935633">Comments</a>]]>
103
+ </description>
104
+ </item>
105
+ <item>
106
+ <title>A whole website in a single JavaScript file</title>
107
+ <link>https://deno.com/blog/a-whole-website-in-a-single-js-file</link>
108
+ <pubDate>Wed, 6 Apr 2022 16:07:19 +0000</pubDate>
109
+ <comments>https://news.ycombinator.com/item?id=30933831</comments>
110
+ <description>
111
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30933831">Comments</a>]]>
112
+ </description>
113
+ </item>
114
+ <item>
115
+ <title>Language of fungi derived from their electrical spiking activity</title>
116
+ <link>https://royalsocietypublishing.org/doi/10.1098/rsos.211926</link>
117
+ <pubDate>Wed, 6 Apr 2022 13:58:09 +0000</pubDate>
118
+ <comments>https://news.ycombinator.com/item?id=30931998</comments>
119
+ <description>
120
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30931998">Comments</a>]]>
121
+ </description>
122
+ </item>
123
+ <item>
124
+ <title>In defense of simple architectures</title>
125
+ <link>https://danluu.com/simple-architectures/</link>
126
+ <pubDate>Wed, 6 Apr 2022 19:04:29 +0000</pubDate>
127
+ <comments>https://news.ycombinator.com/item?id=30936189</comments>
128
+ <description>
129
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30936189">Comments</a>]]>
130
+ </description>
131
+ </item>
132
+ <item>
133
+ <title>Show HN: MetricFlow – open-source metric framework</title>
134
+ <link>https://github.com/transform-data/metricflow</link>
135
+ <pubDate>Wed, 6 Apr 2022 22:12:03 +0000</pubDate>
136
+ <comments>https://news.ycombinator.com/item?id=30938109</comments>
137
+ <description>
138
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30938109">Comments</a>]]>
139
+ </description>
140
+ </item>
141
+ <item>
142
+ <title>The remarkable brain of a carpet cleaner who speaks 24 languages</title>
143
+ <link>https://www.washingtonpost.com/dc-md-va/interactive/2022/multilingual-hyperpolyglot-brain-languages/</link>
144
+ <pubDate>Tue, 5 Apr 2022 15:31:04 +0000</pubDate>
145
+ <comments>https://news.ycombinator.com/item?id=30920287</comments>
146
+ <description>
147
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30920287">Comments</a>]]>
148
+ </description>
149
+ </item>
150
+ <item>
151
+ <title>It Knows (2011)</title>
152
+ <link>https://www.lrb.co.uk/the-paper/v33/n19/daniel-soar/it-knows</link>
153
+ <pubDate>Wed, 6 Apr 2022 08:26:49 +0000</pubDate>
154
+ <comments>https://news.ycombinator.com/item?id=30929778</comments>
155
+ <description>
156
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30929778">Comments</a>]]>
157
+ </description>
158
+ </item>
159
+ <item>
160
+ <title>GhostSCAD: Marrying OpenSCAD and Golang</title>
161
+ <link>https://jany.st/post/2022-04-04-ghostscad-marrying-openscad-and-golang.html</link>
162
+ <pubDate>Wed, 6 Apr 2022 10:59:47 +0000</pubDate>
163
+ <comments>https://news.ycombinator.com/item?id=30930665</comments>
164
+ <description>
165
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30930665">Comments</a>]]>
166
+ </description>
167
+ </item>
168
+ <item>
169
+ <title>Wolfenstein 3D&#x27;s winding journey from pitch to release</title>
170
+ <link>https://www.gamedeveloper.com/gdc2022/wolfenstein-3d-postmortem</link>
171
+ <pubDate>Sun, 3 Apr 2022 02:07:52 +0000</pubDate>
172
+ <comments>https://news.ycombinator.com/item?id=30893655</comments>
173
+ <description>
174
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30893655">Comments</a>]]>
175
+ </description>
176
+ </item>
177
+ <item>
178
+ <title>MIPS provides highly scalable RISC processor IP</title>
179
+ <link>https://www.mips.com/</link>
180
+ <pubDate>Wed, 6 Apr 2022 18:24:26 +0000</pubDate>
181
+ <comments>https://news.ycombinator.com/item?id=30935683</comments>
182
+ <description>
183
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30935683">Comments</a>]]>
184
+ </description>
185
+ </item>
186
+ <item>
187
+ <title>Intel&#x27;s “Cripple AMD” Function (2019)</title>
188
+ <link>https://www.agner.org/forum/viewtopic.php?t=6</link>
189
+ <pubDate>Wed, 6 Apr 2022 17:27:26 +0000</pubDate>
190
+ <comments>https://news.ycombinator.com/item?id=30935064</comments>
191
+ <description>
192
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30935064">Comments</a>]]>
193
+ </description>
194
+ </item>
195
+ <item>
196
+ <title>GoodGuesser</title>
197
+ <link>https://twitter.com/lisperati/status/1509859692855631881</link>
198
+ <pubDate>Tue, 5 Apr 2022 22:30:05 +0000</pubDate>
199
+ <comments>https://news.ycombinator.com/item?id=30925917</comments>
200
+ <description>
201
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30925917">Comments</a>]]>
202
+ </description>
203
+ </item>
204
+ <item>
205
+ <title>Tailscale’s human-scale networks are still controlled by Google and Microsoft</title>
206
+ <link>https://iliana.fyi/blog/tailscale-auth-and-threat-modeling/</link>
207
+ <pubDate>Mon, 4 Apr 2022 19:41:11 +0000</pubDate>
208
+ <comments>https://news.ycombinator.com/item?id=30911109</comments>
209
+ <description>
210
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30911109">Comments</a>]]>
211
+ </description>
212
+ </item>
213
+ <item>
214
+ <title>Dim, a self-hosted media manager</title>
215
+ <link>https://github.com/Dusk-Labs/dim</link>
216
+ <pubDate>Tue, 5 Apr 2022 18:24:59 +0000</pubDate>
217
+ <comments>https://news.ycombinator.com/item?id=30922871</comments>
218
+ <description>
219
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30922871">Comments</a>]]>
220
+ </description>
221
+ </item>
222
+ <item>
223
+ <title>Home sweet homepage, a comic about growing up online</title>
224
+ <link>https://sailorhg.com/home_sweet_homepage/</link>
225
+ <pubDate>Wed, 6 Apr 2022 19:28:44 +0000</pubDate>
226
+ <comments>https://news.ycombinator.com/item?id=30936462</comments>
227
+ <description>
228
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30936462">Comments</a>]]>
229
+ </description>
230
+ </item>
231
+ <item>
232
+ <title>Show HN: Tilepieces – An open source project for visually editing HTML documents</title>
233
+ <link>https://tilepieces.net</link>
234
+ <pubDate>Wed, 6 Apr 2022 13:14:06 +0000</pubDate>
235
+ <comments>https://news.ycombinator.com/item?id=30931586</comments>
236
+ <description>
237
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30931586">Comments</a>]]>
238
+ </description>
239
+ </item>
240
+ <item>
241
+ <title>TruffleHog v3 – Detect and automatically verify over 600 credential types</title>
242
+ <link>https://github.com/trufflesecurity/trufflehog</link>
243
+ <pubDate>Mon, 4 Apr 2022 19:21:30 +0000</pubDate>
244
+ <comments>https://news.ycombinator.com/item?id=30910893</comments>
245
+ <description>
246
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30910893">Comments</a>]]>
247
+ </description>
248
+ </item>
249
+ <item>
250
+ <title>Casting Silver Bullets (2013)</title>
251
+ <link>https://www.patriciabriggs.com/articles/silver/silverbullets.shtml</link>
252
+ <pubDate>Tue, 5 Apr 2022 20:33:23 +0000</pubDate>
253
+ <comments>https://news.ycombinator.com/item?id=30924635</comments>
254
+ <description>
255
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30924635">Comments</a>]]>
256
+ </description>
257
+ </item>
258
+ <item>
259
+ <title>GenieFramework – Build web applications with Julia</title>
260
+ <link>https://genieframework.com/</link>
261
+ <pubDate>Wed, 6 Apr 2022 08:45:26 +0000</pubDate>
262
+ <comments>https://news.ycombinator.com/item?id=30929873</comments>
263
+ <description>
264
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30929873">Comments</a>]]>
265
+ </description>
266
+ </item>
267
+ <item>
268
+ <title>What’s new in Emacs 28.1?</title>
269
+ <link>https://www.masteringemacs.org/article/whats-new-in-emacs-28-1</link>
270
+ <pubDate>Wed, 6 Apr 2022 11:23:33 +0000</pubDate>
271
+ <comments>https://news.ycombinator.com/item?id=30930816</comments>
272
+ <description>
273
+ <![CDATA[<a href="https://news.ycombinator.com/item?id=30930816">Comments</a>]]>
274
+ </description>
275
+ </item>
276
+ </channel>
277
+ </rss>
@@ -0,0 +1,117 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:media="http://search.yahoo.com/mrss/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:podcast="https://podcastindex.org/namespace/1.0" version="2.0">
3
+ <channel>
4
+ <title>Welcome to Night Vale</title>
5
+ <link>http://welcometonightvale.com</link>
6
+ <pubDate>Fri, 22 Sep 2023 16:30:15 -0000</pubDate>
7
+ <lastBuildDate>Fri, 29 Sep 2023 15:05:26 -0000</lastBuildDate>
8
+ <ttl>60</ttl>
9
+ <language>en</language>
10
+ <copyright>2016, Night Vale Presents</copyright>
11
+ <webMaster>help@prx.org (PRX)</webMaster>
12
+ <description>
13
+ <![CDATA[<p>Twice-monthly community updates for the small desert town of Night Vale...</p>]]>
14
+ </description>
15
+ <managingEditor>info@welcometonightvale.com (info@welcometonightvale.com)</managingEditor>
16
+ <generator>PRX Feeder v1.0.0</generator>
17
+ <docs>http://blogs.law.harvard.edu/tech/rss</docs>
18
+ <image>
19
+ <url>https://f.prxu.org/126/images/bc7d203a-c0dd-46ec-956b-03bad13ba85e/nightvalelogo-web4.jpg</url>
20
+ <title>Welcome to Night Vale</title>
21
+ <link>http://welcometonightvale.com</link>
22
+ <width>1400</width>
23
+ <height>1400</height>
24
+ <description>Twice-monthly community updates for the small desert town of Night Vale, where every conspiracy theory is true.</description>
25
+ </image>
26
+ <atom:link href="https://feeds.feedburner.com/welcometonightvalepodcast" rel="self" type="application/rss+xml"/>
27
+ <itunes:author>Night Vale Presents</itunes:author>
28
+ <itunes:type>episodic</itunes:type>
29
+ <itunes:category text="Fiction">
30
+ <itunes:category text="Science Fiction"/>
31
+ </itunes:category>
32
+ <itunes:image href="https://f.prxu.org/126/images/1f749c5d-c83a-4db9-8112-a3245da49c54/nightvalelogo-web4.jpg"/>
33
+ <itunes:explicit>false</itunes:explicit>
34
+ <itunes:owner>
35
+ <itunes:email>info@welcometonightvale.com</itunes:email>
36
+ <itunes:name>Welcome to Night Vale</itunes:name>
37
+ </itunes:owner>
38
+ <itunes:subtitle>Twice-monthly community updates for the small desert town of Night Vale, where every conspiracy theory is true.</itunes:subtitle>
39
+ <itunes:summary>
40
+ <![CDATA[Twice-monthly community updates for the small desert town of Night Vale...]]>
41
+ </itunes:summary>
42
+ <itunes:keywords>cecil,commonplace,cranor,fink,lovecraft,neofuturists,night,nightvale,nightvaleradio,radio,vale,welcome</itunes:keywords>
43
+ <media:copyright>2016, Night Vale Presents</media:copyright>
44
+ <media:thumbnail url="https://f.prxu.org/126/images/bc7d203a-c0dd-46ec-956b-03bad13ba85e/nightvalelogo-web4.jpg"/>
45
+ <media:keywords>cecil,commonplace,cranor,fink,lovecraft,neofuturists,night,nightvale,nightvaleradio,radio,vale,welcome</media:keywords>
46
+ <media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Fiction</media:category>
47
+ <item>
48
+ <guid isPermaLink="false">prx_126_e3dafc45-a202-42d0-a55b-216e733a2d7a</guid>
49
+ <title>Patreon Preview: Behind the Scenes (September 2023)</title>
50
+ <pubDate>Fri, 22 Sep 2023 16:30:15 -0000</pubDate>
51
+ <link>https://play.prx.org/listen?ge=prx_126_e3dafc45-a202-42d0-a55b-216e733a2d7a&amp;uf=https%3A%2F%2Ffeeds.feedburner.com%2Fwelcometonightvalepodcast</link>
52
+ <description>
53
+ <![CDATA[<p>An excerpt from our most recent patreon Behind the Scenes episode...</p>]]>
54
+ </description>
55
+ <enclosure url="https://www.podtrac.com/pts/redirect.mp3/dovetail.prxu.org/_/126/e3dafc45-a202-42d0-a55b-216e733a2d7a/2023_09_17_BTS_Episode_EXCERPT_v2.mp3" type="audio/mpeg" length="7133938"/>
56
+ <itunes:subtitle>An excerpt from our most recent patreon Behind the Scenes episode</itunes:subtitle>
57
+ <itunes:episodeType>full</itunes:episodeType>
58
+ <itunes:duration>04:57</itunes:duration>
59
+ <category>
60
+ <![CDATA[adfree]]>
61
+ </category>
62
+ <itunes:author>Night Vale Presents</itunes:author>
63
+ <itunes:summary>
64
+ <![CDATA[An excerpt from our most recent patreon Behind the Scenes episode...]]>
65
+ </itunes:summary>
66
+ <itunes:image href="https://f.prxu.org/126/e3dafc45-a202-42d0-a55b-216e733a2d7a/images/6e990c53-0f6d-4806-8716-18cba0fedc8a/nightvalelogo_web4.jpg"/>
67
+ <media:content fileSize="7133938" type="audio/mpeg" url="https://www.podtrac.com/pts/redirect.mp3/dovetail.prxu.org/_/126/e3dafc45-a202-42d0-a55b-216e733a2d7a/2023_09_17_BTS_Episode_EXCERPT_v2.mp3"/>
68
+ <content:encoded>
69
+ <![CDATA[<p>An excerpt from our most recent patreon Behind the Scenes episode...]]>
70
+ </content:encoded>
71
+ </item>
72
+ <item>
73
+ <guid isPermaLink="false">prx_126_e650b67a-a572-4302-81f4-6223331fa429</guid>
74
+ <title>234 - The Boy</title>
75
+ <pubDate>Fri, 15 Sep 2023 04:00:00 -0000</pubDate>
76
+ <link>https://play.prx.org/listen?ge=prx_126_e650b67a-a572-4302-81f4-6223331fa429&amp;uf=https%3A%2F%2Ffeeds.feedburner.com%2Fwelcometonightvalepodcast</link>
77
+ <description>
78
+ <![CDATA[<p>This morning we found a boy. He has no name, and no one knows who he is...</p>]]>
79
+ </description>
80
+ <enclosure url="https://www.podtrac.com/pts/redirect.mp3/dovetail.prxu.org/_/126/e650b67a-a572-4302-81f4-6223331fa429/nv234_intro.mp3" type="audio/mpeg" length="33024824"/>
81
+ <itunes:subtitle>This morning we found a boy. He has no name, and no one knows who he is.</itunes:subtitle>
82
+ <itunes:episodeType>full</itunes:episodeType>
83
+ <itunes:duration>22:55</itunes:duration>
84
+ <itunes:author>Night Vale Presents</itunes:author>
85
+ <itunes:summary>
86
+ <![CDATA[This morning we found a boy. He has no name, and no one knows who he is...]]>
87
+ </itunes:summary>
88
+ <itunes:image href="https://f.prxu.org/126/e650b67a-a572-4302-81f4-6223331fa429/images/9b91ed0e-9e8c-4e4c-93f1-d4fbe8014ad0/episodes60.jpg"/>
89
+ <media:content fileSize="33024824" type="audio/mpeg" url="https://www.podtrac.com/pts/redirect.mp3/dovetail.prxu.org/_/126/e650b67a-a572-4302-81f4-6223331fa429/nv234_intro.mp3"/>
90
+ <content:encoded>
91
+ <![CDATA[<p>This morning we found a boy. He has no name, and no one knows who he is.</p>]]>
92
+ </content:encoded>
93
+ </item>
94
+ <item>
95
+ <guid isPermaLink="false">prx_126_ee85d62d-87cb-4abc-8f08-b66ccdd2c103</guid>
96
+ <title>233 - Citizen Spotlight: The Vampire of Lombardi Street</title>
97
+ <pubDate>Fri, 01 Sep 2023 04:00:00 -0000</pubDate>
98
+ <link>https://play.prx.org/listen?ge=prx_126_ee85d62d-87cb-4abc-8f08-b66ccdd2c103&amp;uf=https%3A%2F%2Ffeeds.feedburner.com%2Fwelcometonightvalepodcast</link>
99
+ <description>
100
+ <![CDATA[<p>Luca Albescu lives at 831 Lombardi Street, in a dilapidated Victorian mansion at the top of the hill.</p>]]>
101
+ </description>
102
+ <enclosure url="https://www.podtrac.com/pts/redirect.mp3/dovetail.prxu.org/_/126/ee85d62d-87cb-4abc-8f08-b66ccdd2c103/nv233_intro.mp3" type="audio/mpeg" length="41761016"/>
103
+ <itunes:subtitle>Luca Albescu lives at 831 Lombardi Street, in a dilapidated Victorian mansion at the top of the hill.</itunes:subtitle>
104
+ <itunes:episodeType>full</itunes:episodeType>
105
+ <itunes:duration>28:59</itunes:duration>
106
+ <itunes:author>Night Vale Presents</itunes:author>
107
+ <itunes:summary>
108
+ <![CDATA[Luca Albescu lives at 831 Lombardi Street, in a dilapidated Victorian mansion at the top of the hill.]]>
109
+ </itunes:summary>
110
+ <itunes:image href="https://f.prxu.org/126/ee85d62d-87cb-4abc-8f08-b66ccdd2c103/images/ad5453f1-3ccc-4384-be03-9a4a7558370b/episodes58.jpg"/>
111
+ <media:content fileSize="41761016" type="audio/mpeg" url="https://www.podtrac.com/pts/redirect.mp3/dovetail.prxu.org/_/126/ee85d62d-87cb-4abc-8f08-b66ccdd2c103/nv233_intro.mp3"/>
112
+ <content:encoded>
113
+ <![CDATA[<p>Luca Albescu lives at 831 Lombardi Street, in a dilapidated Victorian mansion at the top of the hill.</p>]]>
114
+ </content:encoded>
115
+ </item>
116
+ </channel>
117
+ </rss>
@@ -6,6 +6,8 @@
6
6
  "feed_url": "http://inessential.com/feed.json",
7
7
  "user_comment": "This feed allows you to read the posts from this site in any feed reader that supports the JSON Feed format. To add this feed to your reader, copy the following URL — http://inessential.com/feed.json — and add it your reader.",
8
8
  "favicon": "http://inessential.com/favicon.ico",
9
+ "icon": "http://inessential.com/icon.png",
10
+ "language": "en-US",
9
11
  "author": {
10
12
  "name": "Brent Simmons",
11
13
  "url": "http://inessential.com/",
data/spec/sample_feeds.rb CHANGED
@@ -10,6 +10,7 @@ module SampleFeeds
10
10
  sample_atom_feed_line_breaks: "AtomFeedWithSpacesAroundEquals.xml",
11
11
  sample_atom_entry_content: "AmazonWebServicesBlogFirstEntryContent.xml",
12
12
  sample_itunes_feed: "itunes.xml",
13
+ sample_itunes_feedburner_feed: "itunes_feedburner.xml",
13
14
  sample_itunes_feed_with_single_quotes: "ITunesWithSingleQuotedAttributes.xml",
14
15
  sample_itunes_feed_with_spaces: "ITunesWithSpacesInAttributes.xml",
15
16
  sample_podlove_feed: "CRE.xml",
@@ -34,7 +35,8 @@ module SampleFeeds
34
35
  sample_rss_feed_huffpost_ca: "HuffPostCanada.xml",
35
36
  sample_invalid_date_format_feed: "InvalidDateFormat.xml",
36
37
  sample_rss_feed_permalinks: "Permalinks.xml",
37
- sample_rss_feed_with_a10_namespace: "a10.xml"
38
+ sample_rss_feed_with_a10_namespace: "a10.xml",
39
+ sample_rss_feed_with_comments: "RSSWithComments.xml"
38
40
  }.freeze
39
41
 
40
42
  FEEDS.each do |method, filename|
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # coverage setup must come before loading lib/ code
4
+ require "support/coverage"
5
+
3
6
  require File.expand_path("#{File.dirname(__FILE__)}/../lib/feedjira")
4
7
  require "sample_feeds"
5
8
 
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "simplecov"
4
+
5
+ SimpleCov.start do
6
+ enable_coverage :branch
7
+ add_filter "_spec.rb"
8
+ end
9
+
10
+ SimpleCov.minimum_coverage(line: 98, branch: 75)