|
16 | 16 | __author__ = 'Spot Media Solutions Sdn. Bhd.' |
17 | 17 | __copyright__ = 'Copyright 2015 Spot Media Solutions Sdn. Bhd.' |
18 | 18 |
|
| 19 | +API_ENDPOINT = 'http://api.atomx.com/{}/'.format(API_VERSION) |
| 20 | + |
19 | 21 |
|
20 | 22 | class Atomx(object): |
21 | | - def __init__(self, email, password, api_endpoint='http://api.atomx.com/{}/'.format(API_VERSION)): |
| 23 | + def __init__(self, email, password, api_endpoint=API_ENDPOINT): |
22 | 24 | self.email = email |
23 | 25 | self.password = password |
24 | 26 | self.api_endpoint = api_endpoint |
@@ -48,25 +50,40 @@ def search(self, query): |
48 | 50 | raise APIError(r.json()['error']) |
49 | 51 | return r.json()['search'] |
50 | 52 |
|
51 | | - def get(self, model, **kwargs): |
52 | | - model = get_model_name(model) |
53 | | - if not model: |
54 | | - raise ModelNotFoundError() |
55 | | - r = self.session.get(self.api_endpoint + model, params=kwargs) |
| 53 | + def get(self, resource, **kwargs): |
| 54 | + r = self.session.get(self.api_endpoint + resource, params=kwargs) |
56 | 55 | if not r.ok: |
57 | 56 | raise APIError(r.json()['error']) |
58 | 57 |
|
59 | 58 | r_json = r.json() |
60 | | - model_name = model.lower() |
61 | | - if model_name in r_json: |
62 | | - return getattr(models, model)(self, **r_json[model_name]) |
63 | | - return [getattr(models, model)(self, **m) for m in r_json[model_name + 's']] |
| 59 | + model_name = r_json['resource'] |
| 60 | + res = r_json[model_name] |
| 61 | + model = get_model_name(model_name) |
| 62 | + if model: |
| 63 | + if isinstance(res, list): |
| 64 | + return [getattr(models, model)(self, **m) for m in res] |
| 65 | + return getattr(models, model)(self, **res) |
| 66 | + return res |
64 | 67 |
|
65 | 68 | def post(self, model, json, **kwargs): |
66 | | - return self.session.post(self.api_endpoint + model, json=json, params=kwargs) |
| 69 | + r = self.session.post(self.api_endpoint + model, json=json, params=kwargs) |
| 70 | + r_json = r.json() |
| 71 | + if not r.ok: |
| 72 | + raise APIError(r_json['error']) |
| 73 | + return r_json[r_json['resource']] |
67 | 74 |
|
68 | 75 | def put(self, model, id, json, **kwargs): |
69 | | - return self.session.put(self.api_endpoint + model + '/' + str(id), json=json, params=kwargs) |
| 76 | + r = self.session.put(self.api_endpoint + model + '/' + str(id), json=json, params=kwargs) |
| 77 | + r_json = r.json() |
| 78 | + if not r.ok: |
| 79 | + raise APIError(r_json['error']) |
| 80 | + return r_json[r_json['resource']] |
70 | 81 |
|
71 | 82 | def delete(self, model, id, json, **kwargs): |
72 | 83 | return self.session.put(self.api_endpoint + model + '/' + str(id), json=json, params=kwargs) |
| 84 | + |
| 85 | + def save(self, model): |
| 86 | + return model.save(self) |
| 87 | + |
| 88 | + def update(self, model): |
| 89 | + return model.update(self) |
0 commit comments