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