"""API Client for ows-product-digital-marketing.""" import requests MARKETING_STRING = 'product-digital-marketing/marketing' MARKETING_PUBLIC_STRING = 'product-digital-marketing/public/marketing' class APIClient: """API Client for ows-product-digital-marketing.""" def __init__(self, base_url, session): """Initialize APIClient class.""" self.base_url = base_url self.session = session def get_territories(self): """Execute a GET against marketing/territories.""" endpoint = '{}/{}/territories'.format(self.base_url, MARKETING_STRING) return requests.get(endpoint, headers={'session': self.session}) def get_public_territories(self): """Execute a GET against public/marketing/territories.""" endpoint = '{}/{}/territories'.format( self.base_url, MARKETING_PUBLIC_STRING) return requests.get(endpoint, headers={'session': self.session}) def get_marketing(self, product_id): """Execute a GET against marketing.""" endpoint = '{}/{}/{}'.format( self.base_url, MARKETING_STRING, product_id) return requests.get(endpoint, headers={'session': self.session}) def post_marketing(self, product_id, marketing_data): """Execute a POST against marketing.""" endpoint = '{}/{}/{}'.format( self.base_url, MARKETING_STRING, product_id) return requests.post( endpoint, headers={'session': self.session}, json=marketing_data) def post_projections(self, product_id, projections_data): """Execute a POST against marketing/projections.""" endpoint = '{}/{}/{}/projections'.format( self.base_url, MARKETING_STRING, product_id) return requests.post( endpoint, headers={'session': self.session}, json=projections_data) def post_copy(self, source_product_id, target_product_id): """Execute a POST against marketing copy endpoint.""" endpoint = '{}/marketing/{}/copy/{}'.format( self.base_url, source_product_id, target_product_id) return requests.post(endpoint) def delete_projection(self, product_id, projection_id): """Execute a DELETE against marketing/projection.""" endpoint = '{}/{}/{}/projection/{}'.format( self.base_url, MARKETING_STRING, product_id, projection_id) return requests.delete(endpoint, headers={'session': self.session})