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
8
9class FeedManager:
10 def __init__(self):
11 self.feeds = {}
12
13 def register(self, feed):
14 self.feeds[feed.FEED_URI] = feed()
15
16 def process_commit(self, commit):
17 for feed in self.feeds.values():
18 feed.process_commit(commit)
19
20 def serve_feed(self, feed_uri, limit, offset, langs, debug=False):
21 for pattern, feed in self.feeds.items():
22 if fnmatchcase(feed_uri, pattern):
23 break
24 else:
25 raise Exception('no matching feed pattern found')
26
27 if '*' in pattern and debug:
28 return feed.serve_wildcard_feed_debug(feed_uri, limit, offset, langs)
29
30 elif '*' in pattern and not debug:
31 return feed.serve_wildcard_feed(feed_uri, limit, offset, langs)
32
33 elif '*' not in pattern and debug:
34 return feed.serve_feed_debug(limit, offset, langs)
35
36 elif '*' not in pattern and not debug:
37 return feed.serve_feed(limit, offset, langs)
38
39 def commit_changes(self):
40 for feed in self.feeds.values():
41 feed.commit_changes()
42
43feed_manager = FeedManager()
44feed_manager.register(BattleFeed)
45feed_manager.register(RapidFireFeed)
46feed_manager.register(PopularFeed)
47feed_manager.register(HomeRunsTeamFeed)
48feed_manager.register(NoraZoneInteresting)