"""Config for Instagram Statistics Workflow.""" import os import subprocess from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import serialization from fangare import catchers STATS_NAME = 'instagram_statistic' ENV = os.getenv('Environment') if os.environ.get('Environment') in ['prod']: try: GIT_HASH_OF_LAST_COMMIT = ( subprocess.check_output( 'git rev-parse HEAD', shell=True).decode().strip()) except subprocess.CalledProcessError: GIT_HASH_OF_LAST_COMMIT = 'instagram_statistics_commit' else: GIT_HASH_OF_LAST_COMMIT = 'instagram_statistics_dev_commit' SLACK_WEBHOOK_URL = os.getenv('SLACK_WEBHOOK_URL') # get Snowflake private_key SNOWFLAKE_PRIVATE_KEY_PATH = os.getenv( 'SNOWFLAKE_PRIVATE_KEY_PATH', '{}/.ssh/snowflake/rsa_key.p8'.format(os.getenv('HOME'))) SNOWFLAKE_KEY_PASSPHRASE = os.getenv('SNOWFLAKE_KEY_PASSPHRASE') if SNOWFLAKE_KEY_PASSPHRASE: # Snowflake key with open(SNOWFLAKE_PRIVATE_KEY_PATH, 'rb') as key: p_key = serialization.load_pem_private_key( key.read(), password=SNOWFLAKE_KEY_PASSPHRASE.encode(), backend=default_backend() ) PRIVATE_KEY = p_key.private_bytes( encoding=serialization.Encoding.DER, format=serialization.PrivateFormat.PKCS8, encryption_algorithm=serialization.NoEncryption()) else: PRIVATE_KEY = None SPREADSHEET_ID = os.environ.get('SPREADSHEET_ID') GS_CONNECTOR_JSON_FILENAME = 'sheets-connector.json' GS_CONNECTOR_CLIENT_EMAIL = \ 'account-9157293711@sheets-connector-321907.' \ 'iam.gserviceaccount.com' GS_CONNECTOR_CLIENT_X504_CERT_URL = \ 'https://www.googleapis.com/robot/v1/metadata/x509/' \ 'account-9157293711%40sheets-connector-321907.iam.g' \ 'serviceaccount.com' GS_CONNECTOR_CLIENT_ID = '116857428306713612502' GS_CONNECTOR_PRIVATE_KEY_ID = 'd5261f7a33eee377098df62378a9e1043b454a04' GS_CONNECTOR_PRIVATE_KEY = \ '-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0' \ 'BAQEFAASCBKcwggSjAgEAAoIBAQDeWVwmYM4JUjHS\ngw8e7kMBD' \ '41e4QzfA+bKglRdqrhhHd+cm6dMppfep/VOKCttjdDJVkdVrc9kC' \ 'gVr\nIIPL+Is0DXbvpPLBz6cOScgmSSNNuy6hDmwG6Yry2Quumpy' \ 'FCqCzRyf//+046MlM\nq+AcERTSED38geNpD3+FNu654lvmOFWOh' \ 'Yx48prJ/44eGgVvh4pkAO10SigRZAtW\n7xtmi5rOg2OYWPIZUVr' \ '4Isp4ZJq4ZklfE2vO1GZfpKX7OphTdL+Ka3rnbTohzTjr\nzG1O6' \ 'JaX8wsxony1YhuBaCmizvCIzL9nRNnoieXFlJbhlS9bVCTbB9l5G' \ 'uQH2M+g\niU1yWJcpAgMBAAECggEAGv3xFwLwcCbnanKY3tHgwMZ' \ 'hDJANw8hRokArurUzWILL\ntv4ZqKSep3EZ8TN6K3yoSGYYwc4YR' \ 'kDbLd6Oxq+fl8w8pdSPLbemGYYbwzNkvZZy\nuirUiArziw3jLP6' \ 'S7/79dCtir+FN1yHsnJ9O1PQT5COu9VzVPQHxzTurw6q21PMZ\nd' \ '1+E2FNu+EFUH3tqMc1RiawoWYU5JRYYZLCaORXkC7XsnbfKgh2pz' \ 'Ld7in2ywTcJ\n6UejgU9qemgIV13o3v6YAmqTu3whAgUC0X5jeQp' \ 'N9GgQa9hdWYLI/+5eQBMi9dn7\nGiTxv53/tEyz4qsx7jTpjeSck' \ 'gWY+z3Fr3rLleibWwKBgQD4qVJyXz6vi2hWJORf\nqZFrqhU3abc' \ 'juqlcKPC/+B6zg3VI473wpWiNPeyjOgZrJoYxAW+RI1UtkwLfmGv' \ 'P\neDui+K248P1GaS87JBO7LcoKLwT9HO9FL4B5TpqSE7uVrKnI0' \ 'LMpp9j7YgOeanRg\n3RQxP8CUFGWi9xt8t1EbYymfcwKBgQDk6T5' \ 'mZ2nhHlmN2dnqA92L/Fm/SWH5D7B5\nUjnKxUvIeXYqw07s0bUC1' \ 'GlA+zHaa3pd6bJwBMw+8hS82pjY4kbIF4h6OHhmHl98\ncSQOv+m' \ 'W75e+dy5oeXu4pWh1C3pgOoVXr3/6Z3OqcpzB+gTUj9Low3qiFQk' \ '/meN7\nyjupy+eP8wKBgEbzqX7RBoX4dVD/Pdq9+6yI33zsQUGEp' \ 'YaSd/+OwNPgErs1oKDl\n0atbnAYHLIWufGPHURpMxqU2aX97cmf' \ 'Emt+prYgz21EX+k4ZwTeLnTbCq929P9ix\n8Sqr7xb3YnMWzWtrg' \ 'XPFXPh9wyKUpZht/LEAy+Z023tgnws7E32JEftZAoGBAMjd\n8ye' \ 'g70Pfge37kEDNC4de9NHp7tLCdbS/9n58CjfsfUihAYzFp/THt2S' \ 'SB/kF/uaR\nv0aUrzU87/2YRC9sv3etTtEQ5HWXiWqFTYKz3KHZt' \ 'Gop4stCbtJkMvkiDUyLjZ6Y\nHdD5HoIe+HcukTaEzin5/o5jry3' \ 'kN73Ug+5HQvcJAoGAQo1YVOv1emJRIKq6mNhq\nDtA+gQuFoLFC3' \ '2kc0JvF4nOaQ2XwMmyX5fuYAjd5O8JwkMr9w6uPavj00vUHY++W' \ '\np0u+8m7qga5+MnO7EvQmicEMv0spCHhO8xuJmBL+RK4vWr78gg' \ 'KZFWwv9MGDwdRJ\nu6cIQeH0BQAYvBHxnuyxXsk=\n-----END P' \ 'RIVATE KEY-----\n' GS_CONNECTOR_SCOPES = \ ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive'] SF_CONFIG = { 'role': os.environ.get('SNOWFLAKE_ROLE'), 'warehouse': os.environ.get('SNOWFLAKE_WAREHOUSE'), 'db': os.environ.get('SNOWFLAKE_DATABASE'), 'schema': os.environ.get('SNOWFLAKE_SCHEMA'), 'user': os.environ.get('SNOWFLAKE_USER'), 'password': catchers.get_secret('SNOWFLAKE_PASSWORD', 'youtube-statistics', ENV), 'account': os.environ.get('SNOWFLAKE_ACCOUNT'), 'private_key': PRIVATE_KEY } aws = { 'aws_key_id': os.environ.get('AWS_ACCESS_KEY_ID'), 'aws_secret_key': os.environ.get('AWS_SECRET_ACCESS_KEY') } # a DB table postfix for specifying country, team etc. (e.g. '_UK') postfix = os.environ.get('SNOWFLAKE_DATABASE_POSTFIX', '') snowflake_table_names = { 'artist_to_track': 'artist_to_track' + postfix, 'instagram_statistics': 'instagram_statistics' + postfix, 'staging_raw': 'staging_raw_instagram_statistics' + postfix } instagram = { 'username': os.environ.get('INSTAGRAM_NICKNAME'), 'password': os.environ.get('INSTAGRAM_PASSWORD') } chrome_safe_storage = os.environ.get('CHROME_SAFE_STORAGE') ITERATIONS = 1003