1# -*- coding: utf-8 -*-
2
3"""
4requests.hooks
5~~~~~~~~~~~~~~
6
7This module provides the capabilities for the Requests hooks system.
8
9Available hooks:
10
11``response``:
12    The response generated from a Request.
13"""
14HOOKS = ['response']
15
16
17def default_hooks():
18    return {event: [] for event in HOOKS}
19
20# TODO: response is the only one
21
22
23def dispatch_hook(key, hooks, hook_data, **kwargs):
24    """Dispatches a hook dictionary on a given piece of data."""
25    hooks = hooks or {}
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
35