From 660e0903157579fae39d72c1ac7af45a1f6dc9d1 Mon Sep 17 00:00:00 2001 From: Luca De Vitis Date: Tue, 23 Aug 2011 23:39:07 +0200 Subject: [PATCH] Forgot to add the hooks sub-package --- requests/hooks/args.py | 7 ++++++ requests/hooks/post_request.py | 7 ++++++ requests/hooks/pre_request.py | 7 ++++++ requests/hooks/response.py | 43 ++++++++++++++++++++++++++++++++++ 4 files changed, 64 insertions(+) create mode 100644 requests/hooks/args.py create mode 100644 requests/hooks/post_request.py create mode 100644 requests/hooks/pre_request.py create mode 100644 requests/hooks/response.py diff --git a/requests/hooks/args.py b/requests/hooks/args.py new file mode 100644 index 0000000..6ac6fb6 --- /dev/null +++ b/requests/hooks/args.py @@ -0,0 +1,7 @@ +""" +request.hooks.args +~~~~~~~~~~~~~~~~~~ + +This module provide a collection of args hooks. +""" + diff --git a/requests/hooks/post_request.py b/requests/hooks/post_request.py new file mode 100644 index 0000000..3a4ff54 --- /dev/null +++ b/requests/hooks/post_request.py @@ -0,0 +1,7 @@ +""" +request.hooks.post_request +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This module provide a collection of post_request hooks. +""" + diff --git a/requests/hooks/pre_request.py b/requests/hooks/pre_request.py new file mode 100644 index 0000000..ca1e715 --- /dev/null +++ b/requests/hooks/pre_request.py @@ -0,0 +1,7 @@ +""" +request.hooks.pre_request +~~~~~~~~~~~~~~~~~~~~~~~~~ + +This module provide a collection of pre_request hooks. +""" + diff --git a/requests/hooks/response.py b/requests/hooks/response.py new file mode 100644 index 0000000..fc3d26d --- /dev/null +++ b/requests/hooks/response.py @@ -0,0 +1,43 @@ +""" +request.hooks.response +~~~~~~~~~~~~~~~~~~~~~~ + +This module provide a collection of response hooks. +""" +from functools import wraps +import zlib +from cgi import parse_header + +#: Dictionary of content decoders. +decoders = { + # No decoding applied. + 'identity': lambda r: r, + # Decode Response file object compressed with deflate. + 'deflate': lambda r: zlib.decompress(r.content), + # Decode Response file object compressed with gzip. + 'gzip': lambda r: zlib.decompress(r.content, 16+zlib.MAX_WBITS), +} + +# Decode Response file object compressed with compress. +decoders['compress'] = decoders['deflate'] + +try: + import bz2 +except ImportError: + pass +else: + # Decode Response file object compressed with bz2. + decoders['bzip2'] = lambda r: bz2.decompress(r.content) + +def unicode_response(r): + """Encode response file object in unicode.""" + content_type, params = parse_header(r.headers.get('content-type')) + charset = params.get('charset', '').strip("'\"") + r.content = unicode(r.content, charset) if charset else unicode(r.content) + return r + +def decode_response(r): + """Decode compressed response content using Contetn-Encoding header.""" + encoding = r.headers.get('content-encoding') + return decoders.get(encoding)(r) + -- 2.34.1