diff --git a/lib/combined_rss_feed.rb b/lib/combined_rss_feed.rb index cbe25b2..26df6b3 100644 --- a/lib/combined_rss_feed.rb +++ b/lib/combined_rss_feed.rb @@ -1,5 +1,9 @@ require "rss_feed" +class Feedjira::Parser::ITunesRSSItem + element "thoughtbot:auto_social_share", as: :auto_social_share +end + class CombinedRssFeed include Enumerable diff --git a/lib/rss_feed.rb b/lib/rss_feed.rb index 73e71c3..553964e 100644 --- a/lib/rss_feed.rb +++ b/lib/rss_feed.rb @@ -4,6 +4,10 @@ require "feed_item" +class Feedjira::Parser::AtomEntry + element "thoughtbot:auto_social_share", as: :auto_social_share +end + class RssFeed include Enumerable @@ -12,7 +16,7 @@ def initialize(url:) end def each - feed.entries.each do |entry| + feed.entries.reject { it.auto_social_share == "false" }.each do |entry| yield FeedItem.new( id: entry.id, title: entry.title, diff --git a/spec/rss_feed_spec.rb b/spec/rss_feed_spec.rb index b9ef943..ae04307 100644 --- a/spec/rss_feed_spec.rb +++ b/spec/rss_feed_spec.rb @@ -29,6 +29,58 @@ ) end + it "ignores entries we don't automatically share to social media" do + Excon.stub({}, {status: 200, body: <<~XML.chomp}) + + + TEST_FEED_TITLE + TEST_SUBTITLE + https://example.com/ + + + 2024-12-20T00:00:00+00:00 + + TEST_NAME + + + TEST_ENTRY_1 + + + TEST_AUTHOR + + https://example.com/test-entry-1 + 2025-05-22T00:00:00+00:00 + 2025-05-22T12:40:11Z + + + + TEST_SUMMARY + false + + + TEST_ENTRY_2 + + + TEST_AUTHOR + + https://example.com/test-entry-2 + 2025-05-29T00:00:00+00:00 + 2025-05-29T12:40:11Z + + + + TEST_SUMMARY + true + + + XML + rss_feed = RssFeed.new url: "https://example.com/blog/feed.xml" + + entries_titles = rss_feed.map(&:title) + + expect(entries_titles).to contain_exactly "TEST_ENTRY_2" + end + def atom_feed File.read("spec/fixtures/rss_feed.xml") end