this repo has no description
1from fnmatch import fnmatchcase
2
3from feeds.battle import BattleFeed
4from feeds.rapidfire import RapidFireFeed
5from feeds.popular import PopularFeed
6from feeds.homeruns import HomeRunsTeamFeed
7from feeds.norazone_interesting import NoraZoneInteresting
8from feeds.sevendirtywords import SevenDirtyWordsFeed
9
10class FeedManager:
11 def __init__(self):
12 self.feeds = {}
13
14 def register(self, feed):
15 self.feeds[feed.FEED_URI] = feed()
16
17 def process_commit(self, commit):
18 for feed in self.feeds.values():
19 feed.process_commit(commit)
20
21 def serve_feed(self, feed_uri, limit, offset, langs, debug=False):
22 for pattern, feed in self.feeds.items():
23 if fnmatchcase(feed_uri, pattern):
24 break
25 else:
26 raise Exception('no matching feed pattern found')
27
28 if '*' in pattern and debug:
29 return feed.serve_wildcard_feed_debug(feed_uri, limit, offset, langs)
30
31 elif '*' in pattern and not debug:
32 return feed.serve_wildcard_feed(feed_uri, limit, offset, langs)
33
34 elif '*' not in pattern and debug:
35 return feed.serve_feed_debug(limit, offset, langs)
36
37 elif '*' not in pattern and not debug:
38 return feed.serve_feed(limit, offset, langs)
39
40 def commit_changes(self):
41 for feed in self.feeds.values():
42 feed.commit_changes()
43
44feed_manager = FeedManager()
45feed_manager.register(BattleFeed)
46feed_manager.register(RapidFireFeed)
47feed_manager.register(PopularFeed)
48feed_manager.register(HomeRunsTeamFeed)
49feed_manager.register(NoraZoneInteresting)
50feed_manager.register(SevenDirtyWordsFeed)