1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

# -*- coding: utf-8 -*- 

 

""" 

requests.hooks 

~~~~~~~~~~~~~~ 

 

This module provides the capabilities for the Requests hooks system. 

 

Available hooks: 

 

``response``: 

The response generated from a Request. 

""" 

HOOKS = ['response'] 

 

 

def default_hooks(): 

return {event: [] for event in HOOKS} 

 

# TODO: response is the only one 

 

 

def dispatch_hook(key, hooks, hook_data, **kwargs): 

"""Dispatches a hook dictionary on a given piece of data.""" 

hooks = hooks or {} 

hooks = hooks.get(key) 

if hooks: 

if hasattr(hooks, '__call__'): 

hooks = [hooks] 

for hook in hooks: 

_hook_data = hook(hook_data, **kwargs) 

if _hook_data is not None: 

hook_data = _hook_data 

return hook_data