Maintains a hook to TriggerDB mapping.
| 42 | |
| 43 | |
| 44 | class HooksHolder(object): |
| 45 | """ |
| 46 | Maintains a hook to TriggerDB mapping. |
| 47 | """ |
| 48 | |
| 49 | def __init__(self): |
| 50 | self._triggers_by_hook = {} |
| 51 | |
| 52 | def __contains__(self, key): |
| 53 | return key in self._triggers_by_hook |
| 54 | |
| 55 | def add_hook(self, hook, trigger): |
| 56 | if hook not in self._triggers_by_hook: |
| 57 | self._triggers_by_hook[hook] = [] |
| 58 | self._triggers_by_hook[hook].append(trigger) |
| 59 | |
| 60 | def remove_hook(self, hook, trigger): |
| 61 | if hook not in self._triggers_by_hook: |
| 62 | return False |
| 63 | remove_index = -1 |
| 64 | for idx, item in enumerate(self._triggers_by_hook[hook]): |
| 65 | if item["id"] == trigger["id"]: |
| 66 | remove_index = idx |
| 67 | break |
| 68 | if remove_index < 0: |
| 69 | return False |
| 70 | self._triggers_by_hook[hook].pop(remove_index) |
| 71 | if not self._triggers_by_hook[hook]: |
| 72 | del self._triggers_by_hook[hook] |
| 73 | return True |
| 74 | |
| 75 | def get_triggers_for_hook(self, hook): |
| 76 | return self._triggers_by_hook.get(hook, []) |
| 77 | |
| 78 | def get_all(self): |
| 79 | triggers = [] |
| 80 | for values in six.itervalues(self._triggers_by_hook): |
| 81 | triggers.extend(values) |
| 82 | return triggers |
| 83 | |
| 84 | |
| 85 | class WebhooksController(object): |