diff FeedUpdater.py @ 9:fd4c8bfa62d6

FeedUpdater throws an exception if the URL could not be retrieved successfully. Includes unit tests.
author Dirk Olmes <dirk@xanthippe.ping.de>
date Tue, 27 Apr 2010 10:22:35 +0200
parents 215c34f61e95
children 01a86b178e60
line wrap: on
line diff
--- a/FeedUpdater.py	Tue Apr 27 03:42:08 2010 +0200
+++ b/FeedUpdater.py	Tue Apr 27 10:22:35 2010 +0200
@@ -4,6 +4,8 @@
 from FeedEntry import FeedEntry
 import feedparser
 
+STATUS_OK = 200
+
 def updateAllFeeds(session):
     allFeeds = session.query(Feed)
     for feed in allFeeds:
@@ -16,10 +18,16 @@
         self.feed = feed
         
     def update(self):
-        result = feedparser.parse(self.feed.rss_url)
+        result = self.getFeed()
         for entry in result.entries:
             self.processEntry(entry)
 
+    def getFeed(self):
+        result = feedparser.parse(self.feed.rss_url)
+        if result["status"] is not STATUS_OK:
+            raise FeedUpdateException()
+        return result
+
     def processEntry(self, entry):
         feedEntry = FeedEntry.findById(entry.id, self.session)
         if feedEntry is None:
@@ -34,3 +42,6 @@
         new.summary = entry.summary
         new.feed = self.feed
         self.session.add(new)
+
+class FeedUpdateException(Exception):
+    pass
\ No newline at end of file