GeezerVison is showing github.com — Don't fail if feed has not changed · stringer-rss/stringer@4765c1a
File tree
Expand file treeCollapse file tree
Open diff view settings
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: app/tasks/fetch_feed.rb +9-5Lines changed: 9 additions & 5 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -15,12 +15,16 @@ def fetch |
15 | 15 | begin |
16 | 16 | raw_feed = @parser.fetch_and_parse(@feed.url, user_agent: "Stringer", if_modified_since: @feed.last_fetched) |
17 | 17 |
|
18 | | - new_entries_from(raw_feed).each do |entry| |
19 | | - StoryRepository.add(entry, @feed) |
| 18 | + if raw_feed == 304 |
| 19 | + @logger.info "Feed has not been modified since last fetch" |
| 20 | + else |
| 21 | + new_entries_from(raw_feed).each do |entry| |
| 22 | + StoryRepository.add(entry, @feed) |
| 23 | + end |
| 24 | + |
| 25 | + FeedRepository.update_last_fetched(@feed, raw_feed.last_modified) |
| 26 | + FeedRepository.set_status(:green, @feed) |
20 | 27 | end |
21 | | - |
22 | | - FeedRepository.update_last_fetched(@feed, raw_feed.last_modified) |
23 | | - FeedRepository.set_status(:green, @feed) |
24 | 28 | rescue Exception => ex |
25 | 29 | FeedRepository.set_status(:red, @feed) |
26 | 30 |
|
|
Collapse file
Copy file name to clipboardExpand all lines: spec/tasks/fetch_feed_spec.rb +10Lines changed: 10 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
|
15 | 15 | FeedRepository.stub(:set_status) |
16 | 16 | end |
17 | 17 |
|
| 18 | + context "when feed has not been modified" do |
| 19 | + it "should not try to fetch posts" do |
| 20 | + parser = stub(fetch_and_parse: 304) |
| 21 | + |
| 22 | + StoryRepository.should_not_receive(:add) |
| 23 | + |
| 24 | + FetchFeed.new(daring_fireball, parser) |
| 25 | + end |
| 26 | + end |
| 27 | + |
18 | 28 | context "when no new posts have been added" do |
19 | 29 | it "should not add any new posts" do |
20 | 30 | fake_feed = stub(last_modified: Time.new(2012, 12, 31)) |
|