Skip to content

Commit 5022a63

Browse files
committed
POP-2419 drying validation & passing kwargs to _api_get
1 parent 0ef8e2e commit 5022a63

File tree

2 files changed

+10
-49
lines changed

2 files changed

+10
-49
lines changed

dynatademand/api.py

Lines changed: 6 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -146,48 +146,38 @@ def get_attributes(self, country_code, language_code, **kwargs):
146146
'languageCode': '{}'.format(language_code)
147147
},
148148
query_params=kwargs,
149-
request_body={},
150149
)
151-
return self._api_get('/attributes/{}/{}'.format(country_code, language_code))
150+
return self._api_get('/attributes/{}/{}'.format(country_code, language_code), kwargs)
152151

153152
def get_countries(self, **kwargs):
154153
self.validator.validate_request(
155154
'get_countries',
156-
path_data={},
157155
query_params=kwargs,
158-
request_body={},
159156
)
160-
return self._api_get('/countries')
157+
return self._api_get('/countries', kwargs)
161158

162159
def get_event(self, event_id):
163160
self.validator.validate_request(
164161
'get_event',
165162
path_data={'eventId': '{}'.format(event_id)},
166-
query_params={},
167-
request_body={},
168163
)
169164
return self._api_get('/events/{}'.format(event_id))
170165

171166
def get_events(self, **kwargs):
172167
self.validator.validate_request(
173168
'get_events',
174-
path_data={},
175169
query_params=kwargs,
176-
request_body={},
177170
)
178-
return self._api_get('/events')
171+
return self._api_get('/events', kwargs)
179172

180173
def create_project(self, project_data):
181174
'''
182175
#TODO: Waiting on a valid request body schema.
183176
self.validator.validate_request(
184177
'create_project',
185-
path_data={},
186-
query_params={},
187178
request_body=project_data,
188179
)
189180
'''
190-
191181
response_data = self._api_post('/projects', project_data)
192182
if response_data.get('status').get('message') != 'success':
193183
raise DemandAPIError(
@@ -201,27 +191,22 @@ def get_project(self, project_id):
201191
self.validator.validate_request(
202192
'get_project',
203193
path_data={'extProjectId': '{}'.format(project_id)},
204-
query_params={},
205-
request_body={},
206194
)
207195
return self._api_get('/projects/{}'.format(project_id))
208196

209197
def get_projects(self, **kwargs):
210198
self.validator.validate_request(
211199
'get_projects',
212-
path_data={},
213200
query_params=kwargs,
214-
request_body={},
215201
)
216-
return self._api_get('/projects')
202+
return self._api_get('/projects', kwargs)
217203

218204
def update_project(self, project_id, update_data):
219205
'''
220206
#TODO: Waiting on a valid request body schema and path schema.
221207
self.validator.validate_request(
222208
'update_project',
223209
path_data={'extProjectId': '{}'.format(project_id)},
224-
query_params={},
225210
request_body=update_data,
226211
)
227212
'''
@@ -238,8 +223,6 @@ def get_project_detailed_report(self, project_id):
238223
self.validator.validate_request(
239224
'get_project_detailed_report',
240225
path_data={'extProjectId': '{}'.format(project_id)},
241-
query_params={},
242-
request_body={},
243226
)
244227
return self._api_get('/projects/{}/detailedReport'.format(project_id))
245228

@@ -250,8 +233,6 @@ def get_line_item(self, project_id, line_item_id):
250233
'extProjectId': '{}'.format(project_id),
251234
'extLineItemId': '{}'.format(line_item_id)
252235
},
253-
query_params={},
254-
request_body={},
255236
)
256237
return self._api_get('/projects/{}/lineItems/{}'.format(project_id, line_item_id))
257238

@@ -268,7 +249,6 @@ def update_line_item(self, project_id, line_item_id, line_item_data):
268249
'extProjectId': '{}'.format(project_id),
269250
'extLineItemId': '{}'.format(line_item_id),
270251
},
271-
query_params={},
272252
request_body=line_item_data,
273253
)
274254
'''
@@ -286,9 +266,8 @@ def get_line_items(self, project_id, **kwargs):
286266
'get_line_items',
287267
path_data={'extProjectId': '{}'.format(project_id)},
288268
query_params=kwargs,
289-
request_body={},
290269
)
291-
return self._api_get('/projects/{}/lineItems'.format(project_id))
270+
return self._api_get('/projects/{}/lineItems'.format(project_id), kwargs)
292271

293272
def get_line_item_detailed_report(self, project_id, line_item_id):
294273
self.validator.validate_request(
@@ -297,34 +276,25 @@ def get_line_item_detailed_report(self, project_id, line_item_id):
297276
'extProjectId': '{}'.format(project_id),
298277
'extLineItemId': '{}'.format(line_item_id),
299278
},
300-
query_params={},
301-
request_body={},
302279
)
303280
return self._api_get('/projects/{}/lineItems/{}/detailedReport'.format(project_id, line_item_id))
304281

305282
def get_feasibility(self, project_id):
306283
self.validator.validate_request(
307284
'get_feasibility',
308285
path_data={'extProjectId': '{}'.format(project_id)},
309-
query_params={},
310-
request_body={},
311286
)
312287
return self._api_get('/projects/{}/feasibility'.format(project_id))
313288

314289
def get_survey_topics(self, **kwargs):
315290
self.validator.validate_request(
316291
'get_survey_topics',
317-
path_data={},
318292
query_params=kwargs,
319-
request_body={},
320293
)
321-
return self._api_get('/categories/surveyTopics')
294+
return self._api_get('/categories/surveyTopics', kwargs)
322295

323296
def get_sources(self):
324297
self.validator.validate_request(
325298
'get_sources',
326-
path_data={},
327-
query_params={},
328-
request_body={},
329299
)
330300
return self._api_get('/sources')

dynatademand/validator.py

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -56,22 +56,13 @@ def __init__(self, ):
5656
def _validate_object(self, schema_type, endpoint_name, data):
5757
jsonschema.validate(schema=self.schemas[schema_type][endpoint_name], instance=data)
5858

59-
def validate_path(self, endpoint_name, data):
60-
self._validate_object('path', endpoint_name, data)
61-
62-
def validate_query(self, endpoint_name, data):
63-
self._validate_object('query', endpoint_name, data)
64-
65-
def validate_body(self, endpoint_name, data):
66-
self._validate_object('body', endpoint_name, data)
67-
68-
def validate_request(self, endpoint_name, path_data=None, query_params=None, request_body=None):
59+
def validate_request(self, endpoint_name, path_data={}, query_params={}, request_body={}):
6960
'''
7061
# TODO: None of the path schemas from the documentation are currently valid.
7162
if 'path' in ENDPOINTS[endpoint_name]:
72-
self.validate_path(endpoint_name, path_data)
63+
self._validate_object('path', endpoint_name, path_data)
7364
'''
7465
if 'query' in ENDPOINTS[endpoint_name]:
75-
self.validate_query(endpoint_name, query_params)
66+
self._validate_object('query', endpoint_name, query_params)
7667
if 'body' in ENDPOINTS[endpoint_name]:
77-
self.validate_body(endpoint_name, request_body)
68+
self._validate_object('body', endpoint_name, request_body)

0 commit comments

Comments
 (0)