mirror of
https://github.com/nextcloud/android.git
synced 2024-12-18 23:11:58 +03:00
46 lines
1,006 B
Python
46 lines
1,006 B
Python
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
HTTP-related utility functions.
|
|
"""
|
|
|
|
from __future__ import with_statement
|
|
import gzip
|
|
try:
|
|
import cStringIO as StringIO
|
|
except ImportError:
|
|
import StringIO
|
|
|
|
|
|
def _gzip_decode(gzip_data):
|
|
"""
|
|
Unzip gzipped data and return them.
|
|
|
|
:param gzip_data: Gzipped data.
|
|
:returns: The actual data.
|
|
"""
|
|
try:
|
|
gzip_data = StringIO.StringIO(gzip_data)
|
|
gzip_file = gzip.GzipFile(fileobj=gzip_data)
|
|
data = gzip_file.read()
|
|
return data
|
|
finally:
|
|
gzip_data.close()
|
|
|
|
|
|
def http_response(response):
|
|
"""
|
|
Return the response of a HTTP request.
|
|
|
|
If the response has been gzipped, gunzip it first.
|
|
|
|
:param response: The raw response of a HTTP request.
|
|
:returns: A response suitable to be used by clients.
|
|
"""
|
|
metadata = response.info()
|
|
data = response.read()
|
|
response.close()
|
|
if metadata.get('content-encoding') == 'gzip':
|
|
return _gzip_decode(data)
|
|
else:
|
|
return data
|