Completed
Push — master ( 02e306...59bd2d )
by
unknown
02:35
created

ActiveCampaignAction   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 39
Duplicated Lines 0 %
Metric Value
wmc 8
dl 0
loc 39
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A run() 0 5 2
A _format_params() 0 11 4
A _get_request() 0 19 2
1
import requests
2
import urllib
3
import urlparse
4
5
from st2actions.runners.pythonrunner import Action
6
7
8
class ActiveCampaignAction(Action):
9
10
    def run(self, **kwargs):
11
        if kwargs['api_key'] is None:
12
            kwargs['api_key'] = self.config['api_key']
13
14
        return self._get_request(kwargs)
15
16
    def _get_request(self, params):
17
        url = urlparse.urljoin(self.config['url'], 'admin/api.php')
18
        headers = {}
19
        headers['Content-Type'] = 'application/x-www-form-urlencoded'
20
21
        params = self._format_params(params)
22
        data = urllib.urlencode(params)
23
        response = requests.get(url=url,
24
                                headers=headers, params=data)
25
26
        results = response.json()
27
        if results['result_code'] is not 1:
28
            failure_reason = ('Failed to perform action: %s \
29
                              (status code: %s)' % (response.text,
30
                              response.status_code))
31
            self.logger.exception(failure_reason)
32
            raise Exception(failure_reason)
33
34
        return results
35
36
    def _format_params(self, params):
37
        output = {}
38
        for k, v in params.iteritems():
39
            if isinstance(v, dict):
40
                print type(v)
41
                for pk, pv in v.iteritems():
42
                    param_name = "%s[%s]" % (k, pk)
43
                    output[param_name] = pv
44
            else:
45
                output[k] = v
46
        return output
47