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:
@@ -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
|
||||
-----
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user