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