"""Graphql connector.""" import json import cachetools from content_utils.connectors.graphql import LambdaGraphQLConnector from owsclient import M2MTokenManager from secrets_manager.lambda_ext import LambdaSecretsManager from src import config from src import constants # Setup M2M Token Manager # Set the environment to QA for testing and dev for development m2m_token_manager = M2MTokenManager( environment=config.ENVIRONMENT, service_name=config.APPLICATION_NAME, secrets_manager=LambdaSecretsManager( environment=config.ENVIRONMENT, service_name=config.APPLICATION_NAME ) ) gql_connector = LambdaGraphQLConnector( graphql_service_name=config.GRAPHQL_SERVICE_NAME, application_name=config.APPLICATION_NAME, logger=config.app_logger, environment=config.ENVIRONMENT, m2m_token_manager=m2m_token_manager, raise_on_error=True ) # Create TTL cache: max 128 entries, 15-minute expiration _product_cache = cachetools.TTLCache(maxsize=128, ttl=constants.TTL_15_MIN) @cachetools.cached(cache=_product_cache) def get_complete_product(hashed_data): """Get complete product.""" json_data = json.loads(hashed_data) return gql_connector.get_complete_product(json_data['product_id'])