Total Complexity | 8 |
Total Lines | 39 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | import requests |
||
8 | |||
9 | def run(self, **kwargs): |
||
10 | if kwargs['api_key'] is None: |
||
11 | kwargs['api_key'] = self.config['api_key'] |
||
12 | |||
13 | return self._get_request(kwargs) |
||
14 | |||
15 | def _get_request(self, params): |
||
16 | url = urlparse.urljoin(self.config['url'], 'admin/api.php') |
||
17 | headers = {} |
||
18 | headers['Content-Type'] = 'application/x-www-form-urlencoded' |
||
19 | |||
20 | params = self._format_params(params) |
||
21 | |||
22 | response = requests.request( |
||
23 | 'POST', url=url, |
||
24 | headers=headers, data=params |
||
25 | ) |
||
26 | |||
27 | results = response.json() |
||
28 | if results['result_code'] is not 1: |
||
29 | failure_reason = ( |
||
30 | 'Failed to perform action. status code: %s; response body: %s' % ( |
||
31 | response.status_code, |
||
32 | response.json |
||
33 | ) |
||
34 | ) |
||
35 | self.logger.exception(failure_reason) |
||
36 | raise Exception(failure_reason) |
||
37 | |||
38 | return results |
||
39 | |||
40 | def _format_params(self, params): |
||
41 | output = {} |
||
42 | for k, v in params.iteritems(): |
||
43 | if isinstance(v, dict): |
||
44 | for pk, pv in v.iteritems(): |
||
45 | if k == 'field': |
||
46 | param_name = "{}[%{}%,0]".format(k, pk) |
||
47 | else: |
||
54 |