forked from astagi/pynimbits
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnimbits.py
62 lines (50 loc) · 2.04 KB
/
nimbits.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import requests, json
class NimbitsError(Exception):
'''Base class for Nimbits errors'''
@property
def message(self):
return self.args[0]
class Nimbits:
ninbits_url_template = '%s/service/v2/%s'
def __init__(self, email, key, endpoint='http://cloud.nimbits.com'):
self.email = email
self.key = key
self.endpoint = endpoint
def set_endpoint(self, endpoint):
self.endpoint = endpoint
def get_tree(self):
query = {'email':self.email,'key':self.key}
req = self.__send_request('GET', 'tree', query)
return self.__parse_response(req)
def get_value(self, id_entity):
query = {'email':self.email,'key':self.key,'id':id_entity}
req = self.__send_request('GET', 'value', query)
return self.__parse_response(req)
def set_value(self, id_entity, **params):
query = {'email':self.email,'key':self.key,'action':'update','id':id_entity}
req = self.__send_request('POST', 'value', query, params)
return self.__parse_response(req)
def __parse_response(self, req):
if req.status_code == 200:
return req.json()
elif req.status_code == 401:
raise NimbitsError('Access denied')
else:
raise NimbitsError(req.text)
def __build_query(self, params):
query = ''
for key, value in params.iteritems():
query = query + '%s=%s&' % (key, value)
return query
def __send_request(self, method, service, query=None, params=None):
url = self.ninbits_url_template % (self.endpoint, service)
if query:
url = '%s?%s' % (url, self.__build_query(query))
headers = {'Content-type': 'application/json', 'Accept': '*/*'}
if params and not 'owner' in params.keys():
params["owner"] = self.email
if method == 'POST':
req = requests.post(url=url, data=json.dumps(params), headers=headers)
elif method == 'GET':
req = requests.get(url=url, headers=headers)
return req