distil/client/client.py
adriant a0b8ec9b7f adding api call to get sales orders in a given range
udating the api to be able to return salesorders between a given range,
as well as the client/shell to make use of this.

Has resulted in a lot of duplicate code, but next patch will go through
and clean up a bunch of that, and extract a few validators into either decorators,
or at least helper functions.

Change-Id: I59ed58c32b8dd4a75babf70df188e965e5e94a16
2014-05-13 15:36:42 +12:00

88 lines
3.6 KiB
Python

import requests
from requests.exceptions import ConnectionError
import json
class Client(object):
def __init__(self, endpoint, **kwargs):
self.endpoint = endpoint
self.auth_token = kwargs.get('token')
def usage(self):
url = self.endpoint + "collect_usage"
try:
response = requests.post(url,
headers={"Content-Type":
"application/json",
"token": self.auth_token})
if response.status_code != 200:
raise AttributeError("Usage cycle failed: " + response.text +
" code: " + str(response.status_code))
except ConnectionError as e:
print e
def sales_order(self, tenants, end, draft):
if draft:
url = self.endpoint + "sales_draft"
else:
url = self.endpoint + "sales_order"
for tenant in tenants:
data = {"tenant": tenant, 'end': end}
try:
response = requests.post(url,
headers={"Content-Type":
"application/json",
"token": self.auth_token},
data=json.dumps(data))
if response.status_code != 200:
raise AttributeError("Sales order cycle failed: " +
response.text + " code: " +
str(response.status_code))
else:
print json.dumps(response.json(), indent=2, sort_keys=True)
except ConnectionError as e:
print e
def sales_historic(self, tenants, date):
url = self.endpoint + "sales_historic"
for tenant in tenants:
data = {"tenant": tenant, "date": date}
try:
response = requests.post(url,
headers={"Content-Type":
"application/json",
"token": self.auth_token},
data=json.dumps(data))
if response.status_code != 200:
raise AttributeError("Sales order cycle failed: " +
response.text + " code: " +
str(response.status_code))
else:
print json.dumps(response.json(), indent=2, sort_keys=True)
except ConnectionError as e:
print e
def sales_range(self, tenants, start, end):
url = self.endpoint + "sales_range"
for tenant in tenants:
data = {"tenant": tenant, "start": start, "end": end}
try:
response = requests.post(url,
headers={"Content-Type":
"application/json",
"token": self.auth_token},
data=json.dumps(data))
if response.status_code != 200:
raise AttributeError("Sales order cycle failed: " +
response.text + " code: " +
str(response.status_code))
else:
print json.dumps(response.json(), indent=2, sort_keys=True)
except ConnectionError as e:
print e