Skip to content

Commit 5dd6b44

Browse files
authored
refactor: dotify query parameters before sending them (#115)
1 parent 14c695e commit 5dd6b44

5 files changed

Lines changed: 8 additions & 58 deletions

File tree

client/connection.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,3 @@ def get(self, path, params=None):
7171
def post(self, path, data=None, params=None):
7272
response = self.session.post(path, json=data, params=params)
7373
return self._handle_response(response)
74-
75-
def put(self, path, data=None, params=None):
76-
response = self.session.put(path, json=data, params=params)
77-
return self._handle_response(response)
78-
79-
def patch(self, path, data=None, params=None):
80-
response = self.session.patch(path, json=data, params=params)
81-
return self._handle_response(response)
82-
83-
def delete(self, path, params=None):
84-
response = self.session.delete(path, params=params)
85-
return self._handle_response(response)

client/resource.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
1+
from flatten_dict import flatten
12

23
class Resource(object):
34

45
def __init__(self, connection):
56
self.connection = connection
67

78
def request_get(self, path, params=None):
9+
if params:
10+
params = flatten(params, reducer='dot')
811
return self.connection.get(path, params=params)
912

1013
def request_post(self, path, data=None, params=None):
14+
if params:
15+
params = flatten(params, reducer='dot')
1116
return self.connection.post(path, data=data, params=params)
12-
13-
def request_put(self, path, data=None, params=None):
14-
return self.connection.put(path, data=data, params=params)
15-
16-
def request_patch(self, path, data=None, params=None):
17-
return self.connection.patch(path, data=data, params=params)
18-
19-
def request_delete(self, path, params=None):
20-
return self.connection.delete(path, params=params)

setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
requires = [
77
'requests>=2.19.1',
88
'backoff>=1.6.0',
9+
'flatten_dict>=0.3.0'
910
]
1011

1112
tests_require = [

tests/test_connection.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,7 @@ def test_handle_response_retuns_body_from_request():
101101

102102
@pytest.mark.parametrize('method,func_name', [
103103
(responses.GET, 'get'),
104-
(responses.POST, 'post'),
105-
(responses.PUT, 'put'),
106-
(responses.PATCH, 'patch'),
107-
(responses.DELETE, 'delete'),
104+
(responses.POST, 'post')
108105
])
109106
def test_http_methods_call_correct_url_and_return_correct_response(method, func_name):
110107
responses.add(
@@ -123,10 +120,7 @@ def test_http_methods_call_correct_url_and_return_correct_response(method, func_
123120

124121
@pytest.mark.parametrize('method,func_name', [
125122
(responses.GET, 'get'),
126-
(responses.POST, 'post'),
127-
(responses.PUT, 'put'),
128-
(responses.PATCH, 'patch'),
129-
(responses.DELETE, 'delete'),
123+
(responses.POST, 'post')
130124
])
131125
def test_http_methods_call_correct_url_with_params_and_return_correct_response(method, func_name):
132126
responses.add(

tests/test_resource.py

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -21,32 +21,3 @@ def test_request_post_calls_connection_post_with_correct_params(mocker):
2121

2222
post_mock.assert_called_once_with('spongebob', data={'one': 'two'}, params={'foo': 'bar'})
2323

24-
25-
def test_request_put_calls_connection_put_with_correct_params(mocker):
26-
put_mock = mocker.patch.object(Connection, 'put')
27-
connection = Connection('http://127.0.0.1:4003')
28-
29-
resource = Resource(connection)
30-
resource.request_put('spongebob', data={'one': 'two'}, params={'foo': 'bar'})
31-
32-
put_mock.assert_called_once_with('spongebob', data={'one': 'two'}, params={'foo': 'bar'})
33-
34-
35-
def test_request_patch_calls_connection_patch_with_correct_params(mocker):
36-
patch_mock = mocker.patch.object(Connection, 'patch')
37-
connection = Connection('http://127.0.0.1:4003')
38-
39-
resource = Resource(connection)
40-
resource.request_patch('spongebob', data={'one': 'two'}, params={'foo': 'bar'})
41-
42-
patch_mock.assert_called_once_with('spongebob', data={'one': 'two'}, params={'foo': 'bar'})
43-
44-
45-
def test_request_delete_calls_connection_delete_with_correct_params(mocker):
46-
delete_mock = mocker.patch.object(Connection, 'delete')
47-
connection = Connection('http://127.0.0.1:4003')
48-
49-
resource = Resource(connection)
50-
resource.request_delete('spongebob', params={'foo': 'bar'})
51-
52-
delete_mock.assert_called_once_with('spongebob', params={'foo': 'bar'})

0 commit comments

Comments
 (0)