Made utils.merge_dict None-safe, and removed lots of "thing or {}"
This commit is contained in:
@@ -30,7 +30,7 @@ class Api(object):
|
||||
password='PASSWORD'
|
||||
)
|
||||
"""
|
||||
kwargs = utils.merge_dict(options or {}, kwargs)
|
||||
kwargs = utils.merge_dict(options, kwargs)
|
||||
|
||||
self.endpoint = kwargs["endpoint"]
|
||||
self.username = kwargs["username"]
|
||||
@@ -50,7 +50,6 @@ class Api(object):
|
||||
token=kwargs["token"] if kwargs.get("token") else None)
|
||||
return Api._api_singleton
|
||||
|
||||
|
||||
def basic_auth(self, token=None):
|
||||
"""Returns base64 encoded token. Used to encode credentials
|
||||
for retrieving the token.
|
||||
@@ -92,7 +91,7 @@ class Api(object):
|
||||
:param files: Dictionary of files to be uploaded via POST
|
||||
"""
|
||||
|
||||
http_headers = utils.merge_dict(self.headers(), headers or {})
|
||||
http_headers = utils.merge_dict(self.headers(), headers)
|
||||
|
||||
if http_headers.get('Pillar-Request-Id'):
|
||||
logging.info("Pillar-Request-Id: {0}".format(http_headers['Pillar-Request-Id']))
|
||||
@@ -122,7 +121,6 @@ class Api(object):
|
||||
"""
|
||||
response = requests.request(method, url, **kwargs)
|
||||
|
||||
|
||||
try:
|
||||
error = self.handle_response(response,
|
||||
response.content.decode('utf-8'))
|
||||
@@ -186,28 +184,28 @@ class Api(object):
|
||||
"""Make GET request
|
||||
"""
|
||||
return self.request(utils.join_url(self.endpoint, action), 'GET',
|
||||
headers=headers or {})
|
||||
headers=headers)
|
||||
|
||||
def post(self, action, params=None, headers=None, files=None):
|
||||
"""Make POST request
|
||||
"""
|
||||
return self.request(utils.join_url(self.endpoint, action), 'POST',
|
||||
body=params or {}, headers=headers or {}, files=files)
|
||||
body=params, headers=headers, files=files)
|
||||
|
||||
def put(self, action, params=None, headers=None):
|
||||
"""Make PUT request
|
||||
"""
|
||||
return self.request(utils.join_url(self.endpoint, action), 'PUT',
|
||||
body=params or {}, headers=headers or {})
|
||||
body=params, headers=headers)
|
||||
|
||||
def patch(self, action, params=None, headers=None, files=None):
|
||||
"""Make PATCH request
|
||||
"""
|
||||
return self.request(utils.join_url(self.endpoint, action), 'PATCH',
|
||||
body=params or {}, headers=headers or {}, files=files)
|
||||
body=params, headers=headers, files=files)
|
||||
|
||||
def delete(self, action, headers=None):
|
||||
"""Make DELETE request
|
||||
"""
|
||||
return self.request(utils.join_url(self.endpoint, action), 'DELETE',
|
||||
headers=headers or {})
|
||||
headers=headers)
|
||||
|
||||
@@ -72,9 +72,18 @@ def merge_dict(data, *override):
|
||||
>>> md = merge_dict({"foo": "bar"}, {1: 2}, {"foo1": "bar2"})
|
||||
>>> md == {1: 2, 'foo': 'bar', 'foo1': 'bar2'}
|
||||
True
|
||||
>>> merge_dict({'foo': 'bar'}, None)
|
||||
{'foo': 'bar'}
|
||||
>>> merge_dict(None, {'foo': 'bar'})
|
||||
{'foo': 'bar'}
|
||||
>>> merge_dict(None, None)
|
||||
{}
|
||||
"""
|
||||
|
||||
result = {}
|
||||
for current_dict in (data,) + override:
|
||||
if current_dict is None:
|
||||
continue
|
||||
result.update(current_dict)
|
||||
return result
|
||||
|
||||
|
||||
@@ -41,3 +41,12 @@ class PillarUtilsTests(unittest.TestCase):
|
||||
# Test unicode value in string
|
||||
self.assertEqual('url?dict=' + quote_plus(r'{"food": "\u0e1c\u0e31\u0e14\u0e44\u0e17\u0e22"}'),
|
||||
utils.join_url_params('url', {'dict': {'food': 'ผัดไทย'}}))
|
||||
|
||||
def test_merge_dict(self):
|
||||
self.assertEqual({1: 2, 'foo': 'bar', 'foo1': 'bar2'},
|
||||
utils.merge_dict({"foo": "bar"}, {1: 2}, {"foo1": "bar2"}))
|
||||
|
||||
self.assertEqual({'foo': 'bar'}, utils.merge_dict({'foo': 'bar'}, None))
|
||||
|
||||
self.assertEqual({'foo': 'bar'}, utils.merge_dict(None, {'foo': 'bar'}))
|
||||
self.assertEqual({}, utils.merge_dict(None, None))
|
||||
|
||||
Reference in New Issue
Block a user