"""API Client for pure ows-contracts.""" import requests CONTRACTS_STRING = 'contracts' class ContractsAPIClient: """API Client for ows-contracts.""" def __init__(self, base_url, headers): """Initialize ows_contracts_APIClient class.""" self.base_url = base_url self.headers = headers def get_product_split(self, vendor_id): """Execute a GET against product_splits.""" endpoint = '{}/{}/product_split/{}'.format( self.base_url, CONTRACTS_STRING, vendor_id ) return requests.get(endpoint, headers=self.headers) def get_track_split(self, vendor_id): """Execute a GET against track_splits.""" endpoint = '{}/{}/track_split/{}'.format( self.base_url, CONTRACTS_STRING, vendor_id ) return requests.get(endpoint, headers=self.headers) def post_product_splits(self, vendor_id, data): """Execute a POST against product_splits.""" endpoint = '{}/{}/product_split/{}'.format( self.base_url, CONTRACTS_STRING, vendor_id ) return requests.post(endpoint, json=data, headers=self.headers) def post_track_splits(self, vendor_id, data): """Execute a POST against track_splits.""" endpoint = '{}/{}/track_split/{}'.format( self.base_url, CONTRACTS_STRING, vendor_id ) return requests.post(endpoint, json=data, headers=self.headers) def put_product_splits(self, vendor_id, data): """Execute a PUT against product_splits.""" endpoint = '{}/{}/product_split/{}'.format( self.base_url, CONTRACTS_STRING, vendor_id ) return requests.put(endpoint, json=data, headers=self.headers) def put_track_splits(self, vendor_id, data): """Execute a PUT against track_splits.""" endpoint = '{}/{}/track_split/{}'.format( self.base_url, CONTRACTS_STRING, vendor_id ) return requests.put(endpoint, json=data, headers=self.headers) def delete_product_splits(self, upc, data): """Execute a DELETE against product_splits.""" endpoint = '{}/{}/product_split/{}'.format(self.base_url, CONTRACTS_STRING, upc) return requests.delete(endpoint, json=data, headers=self.headers) def delete_track_splits(self, vendor_id, data): """Execute a DELETE against product_splits.""" endpoint = '{}/{}/track_split/{}'.format( self.base_url, CONTRACTS_STRING, vendor_id ) return requests.delete(endpoint, json=data, headers=self.headers) def post_product_territory_split(self, vendor_id, data): """Execute a POST against product_territory_split endpoint.""" endpoint = '{}/{}/product_territory_split/{}'.format( self.base_url, CONTRACTS_STRING, vendor_id ) return requests.post(endpoint, json=data, headers=self.headers) def put_product_territory_split(self, vendor_id, data): """Execute a PUT against product_territory_split endpoint.""" endpoint = '{}/{}/product_territory_split/{}'.format( self.base_url, CONTRACTS_STRING, vendor_id ) return requests.put(endpoint, json=data, headers=self.headers) def get_product_territory_split(self, vendor_id): """Execute a GET against product_territory_split endpoint.""" endpoint = '{}/{}/product_territory_split/{}'.format( self.base_url, CONTRACTS_STRING, vendor_id ) return requests.get(endpoint, headers=self.headers) def delete_product_territory_split(self, upc, data): """Execute a DELETE against product_territory_split endpoint.""" endpoint = '{}/{}/product_territory_split/{}'.format( self.base_url, CONTRACTS_STRING, upc ) return requests.delete(endpoint, json=data, headers=self.headers) def get_service_type_by_vendor_id(self, vendor_id): """Get service_type_id by vendor_id.""" endpoint = '{}/vendor/{}/active'.format(self.base_url, vendor_id) active_vendor = requests.get(endpoint, headers=self.headers) vendor_contract_id = active_vendor.json()['vendor_contract_id'] endpoint = '{}/contracts/{}/service-type'.format( self.base_url, vendor_contract_id ) return requests.get(endpoint, headers=self.headers) def update_vendor_contract_service_type(self, vendor_id, payload): """Update service_type_id for active vendor contracts.""" endpoint = '{}/contracts/service_type/{}'.format(self.base_url, vendor_id) return requests.patch(endpoint, headers=self.headers, json=payload)