"""Connector for communicating with the Switchboard API.""" from switchboard_consumer import config from switchboard_consumer.connectors.graphql import GraphQLConnector from switchboard_consumer.connectors.switchboard_aws import \ get_switchboard_credentials from switchboard_consumer.constants.graphql import ( lookup_product_by_local_id, lookup_product_by_upc, lookup_project_by_local_id, lookup_track_by_isrc) class SwitchboardClient(GraphQLConnector): """Connector for switchboard.""" def __init__(self, url, secret, secret_name, credential_fetcher): """Init SwitchboardClient.""" super().__init__(url, secret, secret_name, credential_fetcher) def lookup_project_by_local_id(self, local_id, correlation_id): """Look up a project by a local id pair.""" response = self._execute(lookup_project_by_local_id.query, local_id, correlation_id) if response.get('errors'): return response return response['data']['getProjectByLocalId'] def lookup_product_by_local_id(self, local_id, system, correlation_id): """Look up a Product by local id.""" data = { 'localId': local_id, 'system': system } response = self._execute(lookup_product_by_local_id.query, data, correlation_id) if response.get('errors'): return response return response['data']['getProductByLocalId'] def get_product_by_upc(self, data, correlation_id): """Call the SWB getProductByUpc query.""" data = { 'upc': data['businessKey'], 'system': data['system'] } response = self._execute( lookup_product_by_upc.query, data, correlation_id) if response.get('errors'): return response return response['data']['getProductByUpc'] def lookup_track_by_isrc(self, isrc, correlation_id): """Call the SWB getTrackByIsrc query.""" data = { 'isrc': isrc, 'system': 'SONY' } response = self._execute( lookup_track_by_isrc.query, data, correlation_id) if response.get('errors'): return response return response['data']['getTrackByIsrc'] def get_swb_client(): """Get Switchboard client.""" return SwitchboardClient( config.SWITCHBOARD_GRAPHQL_URL, config.SWITCHBOARD_SECRET, config.SWITCHBOARD_SECRET_ARN, get_switchboard_credentials )