"""Config. Contains essential constants for project functioning. """ import os import requests LOOKER_MAIN_INSTANCE_CLIENT_ID =\ os.environ.get('LOOKER_MAIN_INSTANCE_CLIENT_ID') LOOKER_MAIN_INSTANCE_CLIENT_SECRET =\ os.environ.get('LOOKER_MAIN_INSTANCE_CLIENT_SECRET') LOOKER_MAIN_INSTANCE_URL = 'https://theorchard.looker.com:19999/api/3.1' LOOKER_CLIENT_INSTANCE_CLIENT_ID =\ os.environ.get('LOOKER_CLIENT_INSTANCE_CLIENT_ID') LOOKER_CLIENT_INSTANCE_CLIENT_SECRET =\ os.environ.get('LOOKER_CLIENT_INSTANCE_CLIENT_SECRET') LOOKER_CLIENT_INSTANCE_URL = 'https://theorchardoem.looker.com:19999/api/3.1' # Currently set 37 as default for rolkhovskiy@theorchard.com user base folder. # Should later be changed to a dedicated space. CLIENT_LOOKER_SPACE_ID = 37 # Currently set 37 as default for rolkhovskiy@theorchard.com user base folder. # Should later be changed to a dedicated space. CLIENT_LOOKER_FOLDER_ID = 37 # Currently set 25 as default for rolkhovskiy@theorchard.com user. # Should later be changed to an id of a special user for syncing. CLIENT_LOOKER_USER_ID = 25 def get_api3_key(client_id, client_secret, instance): """Get an access token fro provided credentials on a given instance.""" credentials = { 'client_id': client_id, 'client_secret': client_secret } url = f'{instance}/login' auth = requests.post(url, params=credentials) return auth.json()['access_token'] LOOKER_MAIN_AUTH_TOKEN = get_api3_key( LOOKER_MAIN_INSTANCE_CLIENT_ID, LOOKER_MAIN_INSTANCE_CLIENT_SECRET, LOOKER_MAIN_INSTANCE_URL ) LOOKER_CLIENT_AUTH_TOKEN = get_api3_key( LOOKER_CLIENT_INSTANCE_CLIENT_ID, LOOKER_CLIENT_INSTANCE_CLIENT_SECRET, LOOKER_CLIENT_INSTANCE_URL ) LOOKER_MAIN_VALIDATION =\ {'Authorization': f'token {LOOKER_MAIN_AUTH_TOKEN}'} LOOKER_CLIENT_VALIDATION =\ {'Authorization': f'token {LOOKER_CLIENT_AUTH_TOKEN}'} GITHUB_TOKEN = os.environ.get('GITHUB_TOKEN') def get_validation(instance): """Get a correct validation for a given instance. Used in functions where we might need either main or client instance rather than either specific one. Args: instance (str): url of an instance. Should only use consts defined above. Returns: dict: json representation of a header needed for validation. bool: False if instance argument was anything except one of two expected ones. """ if instance == LOOKER_MAIN_INSTANCE_URL: return LOOKER_MAIN_VALIDATION elif instance == LOOKER_CLIENT_INSTANCE_URL: return LOOKER_CLIENT_VALIDATION return False