Adding a third return value from connection.perform_request - headers

This will be used to implement deserializing based on mimetype
This commit is contained in:
Honza Král
2013-12-13 19:36:21 +01:00
parent be9acfad90
commit e2ab7ea80d
8 changed files with 13 additions and 13 deletions
+3
View File
@@ -13,6 +13,9 @@ Changelog
* `helpers.bulk` and `helpers.streaming_bulk` are no longer limitted to just
index operations.
* unicode body (for `incices.analyze` for example) is now handled correctly
* changed `perform_request` on `Connection` classes to return headers as well.
This is a backwards incompatible change for people who have developed their own
connection class.
0.4.3
-----
+1 -1
View File
@@ -58,4 +58,4 @@ class RequestsHttpConnection(Connection):
self.log_request_success(method, url, response.request.path_url, body, response.status_code, raw_data, duration)
return response.status_code, raw_data
return response.status_code, response.headers, raw_data
+1 -3
View File
@@ -57,7 +57,5 @@ class Urllib3HttpConnection(Connection):
self.log_request_success(method, full_url, url, body, response.status,
raw_data, duration)
return response.status, raw_data
return response.status, response.getheaders(), raw_data
+1 -1
View File
@@ -77,7 +77,7 @@ class MemcachedConnection(PoolingConnection):
self.log_request_success(method, full_url, url, body, status,
response, duration)
return status, response
return status, {}, response
+1 -3
View File
@@ -73,7 +73,5 @@ class ThriftConnection(PoolingConnection):
self.log_request_success(method, url, url, body, response.status,
response.body, duration)
return response.status, response.body
return response.status, response.headers or {}, response.body
+2 -2
View File
@@ -154,7 +154,7 @@ class Transport(object):
for c in self.connection_pool.connections + self.seed_connections:
try:
# use small timeout for the sniffing request, should be a fast api call
_, node_info = c.perform_request('GET', '/_cluster/nodes', timeout=.1)
_, headers, node_info = c.perform_request('GET', '/_cluster/nodes', timeout=.1)
node_info = self.serializer.loads(node_info)
break
except (ConnectionError, SerializationError):
@@ -251,7 +251,7 @@ class Transport(object):
connection = self.get_connection()
try:
status, raw_data = connection.perform_request(method, url, params, body, ignore=ignore)
status, headers, raw_data = connection.perform_request(method, url, params, body, ignore=ignore)
except ConnectionError:
self.mark_dead(connection)
+2 -2
View File
@@ -62,7 +62,7 @@ class TestRequestsConnection(TestCase):
return con
def _get_request(self, connection, *args, **kwargs):
status, data = connection.perform_request(*args, **kwargs)
status, headers, data = connection.perform_request(*args, **kwargs)
self.assertEquals(200, status)
self.assertEquals(u'{}', data)
@@ -129,7 +129,7 @@ class TestRequestsConnection(TestCase):
@patch('elasticsearch.connection.base.logger')
def test_success_logs_and_traces(self, logger, tracer):
con = self._get_mock_connection(response_body='''{"answer": "that's it!"}''')
status, data = con.perform_request('GET', '/', {'param': 42}, '''{"question": "what's that?"}''')
status, headers, data = con.perform_request('GET', '/', {'param': 42}, '''{"question": "what's that?"}''')
# trace request
self.assertEquals(1, tracer.info.call_count)
+2 -1
View File
@@ -11,6 +11,7 @@ class DummyConnection(Connection):
def __init__(self, **kwargs):
self.exception = kwargs.pop('exception', None)
self.status, self.data = kwargs.pop('status', 200), kwargs.pop('data', '{}')
self.headers = kwargs.pop('headers', {})
self.calls = []
super(DummyConnection, self).__init__(**kwargs)
@@ -18,7 +19,7 @@ class DummyConnection(Connection):
self.calls.append((args, kwargs))
if self.exception:
raise self.exception
return self.status, self.data
return self.status, self.headers, self.data
CLUSTER_NODES = '''{
"ok" : true,