diff --git a/Intaro.py b/Intaro.py index 7558db6..a423e14 100644 --- a/Intaro.py +++ b/Intaro.py @@ -1,4 +1,4 @@ -import requests +import requests, json class IntaroApy: """Intaro Api wrapper""" @@ -25,7 +25,7 @@ class IntaroApy: self.parameters = { 'apiKey': self.apiKey } if statusCode > 400 or r.has_key('success') and r['success'] == False : - #TODO: ApiException + #TODO: raise ApiException pass if r.has_key('generatedAt') : @@ -36,6 +36,21 @@ class IntaroApy: return r + def getErrorMessage(self, response) : + if type(response) is not dict : return '' + err = '' + + if response.has_key('message'): + err = response['message'] + elif response.has_key('error') : + err = response['error']['message'] + elif response.has_key('errorMsg') : + err = response['errorMsg'] + + if len(err) == 0 : return 'Application Error' + + return err + def orderGet(self, id, by='externalId') : url = self.apiUrl + 'orders/' + str(id) @@ -44,3 +59,159 @@ class IntaroApy: return self.requestApi(url) + def orderCreate(self, order) : + dataJson = json.dumps(order) + self.parameters['order'] = dataJson + + url = self.apiUrl + 'orders/create' + return self.requestApi(url, 'POST') + + def orderEdit(self, order) : + dataJson = json.dumps(order) + self.parameters['order'] = dataJson + + url = self.apiUrl + 'orders/' + str(order['externalId']) + '/edit' + return self.requestApi(url, 'POST') + + def orderUpload(self, orders) : + dataJson = json.dumps(orders) + self.parameters['orders'] = dataJson + + url = self.apiUrl + 'orders/' + str(order['externalId']) + '/edit' + result = self.requestApi(url, 'POST') + + if type(result) is dict and result.has_key('uploadedOrders') : + return result['uploadedOrders'] + else : + return result + + def orderFixExternalIds(self, orders) : + dataJson = json.dumps(orders) + self.parameters['orders'] = dataJson + + url = self.apiUrl + 'orders/fix-external-ids' + return self.requestApi(url, 'POST') + + def orderHistory(self, startDate='', endDate='', limit=100, offset=0) : + url = self.apiUrl + 'orders/history' + self.parameters['startDate'] = startDate + self.parameters['endDate'] = endDate + self.parameters['limit'] = limit + self.parameters['offset'] = offset + + return self.requestApi(url) + + def customerGet(self, id, by='externalId') : + url = self.apiUrl + 'customers/' + str(id) + + if by != 'externalId' : + self.parameters['by'] = by + + return self.requestApi(url) + + def customers(self, phone=None, email=None, fio=None, limit=200, offset=0) : + url = self.apiUrl + 'customers' + + if email : + self.parameters['email'] = email + if phone : + self.parameters['phone'] = phone + if fio : + self.parameters['fio'] = fio + + self.parameters['limit'] = limit + self.parameters['offset'] = offset + + return self.requestApi(url) + + def customerCreate(self, customer) : + dataJson = json.dumps(customer) + self.parameters['customer'] = dataJson + + url = self.apiUrl + 'customers/create' + return self.requestApi(url, 'POST') + + def customerEdit(self, customer) : + dataJson = json.dumps(customer) + self.parameters['customer'] = dataJson + + url = self.apiUrl + 'customers/' + customer['externalId'] + '/edit' + return self.requestApi(url, 'POST') + + def customerUpload(self, customers) : + dataJson = json.dumps(customers) + self.parameters['customers'] = dataJson + + url = self.apiUrl + 'customers/upload' + result = self.requestApi(url, 'POST') + + if type(result) is dict and result.has_key('uploaded') : + return result['uploaded'] + else : + return result + + def deliveryTypesList(self) : + url = self.apiUrl + 'reference/delivery-types' + return self.requestApi(url) + + def deliveryTypeEdit(self, deliveryType) : + dataJson = json.dumps(deliveryType) + self.parameters['deliveryType'] = dataJson + + url = self.apiUrl + 'reference/delivery-types/' + deliveryType['code'] + '/edit' + return self.requestApi(url, 'POST') + + def deliveryServicesList(self) : + url = self.apiUrl + 'reference/delivery-services' + return self.requestApi(url) + + def deliveryServiceEdit(self, deliveryService) : + dataJson = json.dumps(deliveryService) + self.parameters['deliveryService'] = dataJson + + url = self.apiUrl + 'reference/delivery-services/' + deliveryService['code'] + '/edit' + return self.requestApi(url, 'POST') + + def paymentTypesList(self) : + url = self.apiUrl + 'reference/payment-types' + return self.requestApi(url) + + def paymentTypesEdit(self, paymentType) : + dataJson = json.dumps(paymentType) + self.parameters['paymentType'] = dataJson + + url = self.apiUrl + 'reference/payment-types/' + paymentType['code'] + '/edit' + return self.requestApi(url, 'POST') + + def orderTypesList(self) : + url = self.apiUrl + 'reference/order-types' + return self.requestApi(url) + + def orderTypesEdit(self, orderType) : + dataJson = json.dumps(orderType) + self.parameters['orderType'] = dataJson + + url = self.apiUrl + 'reference/order-types/' + orderType['code'] + '/edit' + return self.requestApi(url, 'POST') + + def orderMethodsList(self) : + url = self.apiUrl + 'reference/order-methods' + return self.requestApi(url) + + def orderMethodsEdit(self, orderMethod) : + dataJson = json.dumps(orderMethod) + self.parameters['orderMethod'] = dataJson + + url = self.apiUrl + 'reference/order-methods/' + orderMethod['code'] + '/edit' + return self.requestApi(url, 'POST') + + def orderStatusesList(self) : + url = self.apiUrl + 'reference/statuses' + return self.requestApi(url) + + def orderStatusEdit(self, status) : + dataJson = json.dumps(orderStatuse) + self.parameters['status'] = dataJson + + url = self.apiUrl + 'reference/statuses/' + status['code'] + '/edit' + return self.requestApi(url, 'POST')