9da94366d7e4d11b3f66743d604b7320cdc8cc6d
[sdc/sdc-distribution-client.git] /
1 # -*- coding: utf-8 -*-
2
3 """
4 requests.hooks
5 ~~~~~~~~~~~~~~
6
7 This module provides the capabilities for the Requests hooks system.
8
9 Available hooks:
10
11 ``response``:
12     The response generated from a Request.
13
14 """
15 HOOKS = ['response']
16
17 def default_hooks():
18     return dict((event, []) for event in HOOKS)
19
20 # TODO: response is the only one
21
22
23 def dispatch_hook(key, hooks, hook_data, **kwargs):
24     """Dispatches a hook dictionary on a given piece of data."""
25     hooks = hooks or dict()
26     hooks = hooks.get(key)
27     if hooks:
28         if hasattr(hooks, '__call__'):
29             hooks = [hooks]
30         for hook in hooks:
31             _hook_data = hook(hook_data, **kwargs)
32             if _hook_data is not None:
33                 hook_data = _hook_data
34     return hook_data