"""API Client for ows-abacus-state.""" import requests class AbacusstateAPIClient: """API Client for ows-abacus-state.""" def __init__(self, base_url, headers): """Initialize ows_state_APIClient class.""" self.base_url = base_url self.headers = headers def post_states(self, body): """POST /abacus-states endpoint.""" endpoint = '{}/abacus-states'.format(self.base_url) return requests.post(endpoint, headers=self.headers, json=body) def get_state(self, parent_table_name, parent_table_id): """GET /abacus-state/{parent_table_name}/{parent_table_id} endpoint.""" endpoint = '{}/abacus-state/{}/{}'.format( self.base_url, parent_table_name, parent_table_id ) return requests.get(endpoint, headers=self.headers) def get_state_by_state_id(self, state_id): """GET /abacus-state/{abacus_state_id} .""" endpoint = '{}/abacus-state/{}'.format(self.base_url, state_id) return requests.get(endpoint, headers=self.headers) def get_states_dataloader(self, body): """POST /abacus-state/dataloader .""" endpoint = '{}/abacus-state/dataloader'.format(self.base_url) return requests.post(endpoint, json=body, headers=self.headers) def put_state(self, state_id, body): """PUT /abacus-state/{abacus_state_id} endpoint.""" endpoint = '{}/abacus-state/{}'.format(self.base_url, state_id) return requests.put(endpoint, headers=self.headers, json=body) def put_states(self, parent_table_name, body): """PUT /abacus-states/{parent_table_name} endpoint.""" endpoint = '{}/abacus-states/{}'.format(self.base_url, parent_table_name) return requests.put(endpoint, headers=self.headers, json=body) def post_states_by_parent_table_payment_group_payment_batch( self, parent_table_name, parent_table_id ): """POST /abacus-states/// .""" endpoint = '{}/abacus-states/{}/{}'.format( self.base_url, parent_table_name, parent_table_id ) return requests.post(endpoint, headers=self.headers) def bulk_query_states(self, body=None, params=None): """POST /abacus-states/query endpoint. NOTE: This endpoint uses a POST method to allow for a larger list of parent_table_ids. Args: body: Request body containing filters (parent_table_name, parent_table_ids, action_name) params: Query parameters containing pagination (limit, offset) """ endpoint = '{}/abacus-states/query'.format(self.base_url) return requests.post(endpoint, headers=self.headers, json=body, params=params)