""" Default app configuration. """ import os from core.constants import VENDOR_APPLE, VENDOR_SPOTIFY API_PREFIX = "/api" REAL_API_PREFIX = "/apollo-api" # prefix in privateapi for apollo-api server AUTH_API_KEY = os.environ["AUTH_API_KEY"] DEFAULT_REQUEST_TIMEOUT = int(os.environ.get("DEFAULT_REQUEST_TIMEOUT", 90)) DEFAULT_DEMOGRAPHIC_BATCH_SIZE = 1000 CONSUMER_ANALYTICS_USER = os.environ["CONSUMER_ANALYTICS_USER"] CONSUMER_ANALYTICS_PASS = os.environ["CONSUMER_ANALYTICS_PASS"] CONSUMER_ANALYTICS_API = os.environ["CONSUMER_ANALYTICS_API"] CONSUMER_ANALYTICS_FIRST_STREAM_DATE_URL = { VENDOR_SPOTIFY: CONSUMER_ANALYTICS_API + "/spotify-consumer-analytics-compat/track-first-stream-date", VENDOR_APPLE: CONSUMER_ANALYTICS_API + "/apple-consumer-analytics/track-first-stream-date", } CONSUMER_ANALYTICS_TRACK_PER_COUNTRY_URL = { VENDOR_SPOTIFY: CONSUMER_ANALYTICS_API + "/spotify-consumer-analytics-compat/track-per-country-2", VENDOR_APPLE: CONSUMER_ANALYTICS_API + "/apple-consumer-analytics/track-compat", } CONSUMER_ANALYTICS_CHUNK_SIZE = int(os.environ.get("CONSUMER_ANALYTICS_CHUNK_SIZE", 100)) CONSUMER_ANALYTICS_REQUEST_TIMEOUT = int(os.environ.get("CONSUMER_ANALYTICS_REQUEST_TIMEOUT", 120)) DSP_AUTH = os.environ["DSPAPI_APPKEY"] DSP_API = ( os.environ["DSPAPI_HOSTNAME"] if "https://" in os.environ["DSPAPI_HOSTNAME"] else "https://" + os.environ["DSPAPI_HOSTNAME"] ) DSP_TRACK_PLAYLISTS_STREAMS_URL = DSP_API + "/api/consumer_analytics/playlists-summary" DSP_STREAMS_PER_COUNTRY_BULK_URL = DSP_API + "/api/consumer_analytics/track-per-country-bulk" DSP_STREAMS_LATEST_DATE_URL = DSP_API + "/api/consumer_analytics/streams-latest-date" DSP_STREAMS_FIRST_DATE_URL = DSP_API + "/api/consumer_analytics/tracks-first-stream-dates" DSP_TRACKS_BULK_STREAMS_URL_V1 = DSP_API + "/api/analytics/v1/tracks-date-range-streams" VENDOR_APPKEY = os.environ["VENDORAPI_APPKEY"] VENDOR_HOSTNAME = os.environ["VENDORAPI_HOSTNAME"] if not VENDOR_HOSTNAME.startswith("https://"): VENDOR_HOSTNAME = f"https://{VENDOR_HOSTNAME}" VENDOR_TRACKS_URL = { VENDOR_SPOTIFY: f"{VENDOR_HOSTNAME}/api/spotify/v1/tracks", VENDOR_APPLE: f"{VENDOR_HOSTNAME}/api/apple/v1/tracks", } VENDOR_ALBUMS_URL = { VENDOR_SPOTIFY: f"{VENDOR_HOSTNAME}/api/spotify/v1/albums", VENDOR_APPLE: f"{VENDOR_HOSTNAME}/api/apple/v1/albums", } VENDOR_TRACKS_IMAGES_URL = { VENDOR_SPOTIFY: f"{VENDOR_HOSTNAME}/api/spotify/v1/tracks-images", VENDOR_APPLE: f"{VENDOR_HOSTNAME}/api/apple/v1/tracks-images", } VENDOR_PLAYLISTS_IMAGES_URL = { VENDOR_SPOTIFY: f"{VENDOR_HOSTNAME}/api/spotify/v1/playlists-images", VENDOR_APPLE: f"{VENDOR_HOSTNAME}/api/apple/v1/playlists-images", } VENDOR_DEFAULT_DATA_TTL = os.environ.get("VENDORAPI_DEFAULT_DATA_TTL", str(60 * 60 * 6)) FILTR_API = ( os.environ["ADMINAPI_HOSTNAME"] if "https://" in os.environ["ADMINAPI_HOSTNAME"] else "https://" + os.environ["ADMINAPI_HOSTNAME"] ) FILTR_AUTH = os.environ["ADMINAPI_KEY"] FILTR_REQUEST_TIMEOUT = 120 FILTR_SPOTIFY_PLAYLISTS_WITH_TRACK_URL = FILTR_API + "/spotifyplaylistswithtrack" FILTR_SPOTIFY_PLAYLISTS_WITH_TRACK_HISTORY_URL = FILTR_API + "/spotifyplaylist/tracklisthistory/track" # AWS SQS queue URL TRACK_VISITS_MESSAGE_QUEUE_URL = os.environ["TRACK_VISITS_MESSAGE_QUEUE_URL"] # AWS access configuration AWS_DEFAULT_REGION = os.environ.get("AWS_DEFAULT_REGION", "us-east-1") CACHE_TYPE = os.environ.get("CACHE_TYPE", "redis") CACHE_DEFAULT_TIMEOUT = int(os.environ.get("CACHE_DEFAULT_TIMEOUT", 600)) CACHE_REDIS_HOST = os.environ["REDIS_HOST"] CACHE_REDIS_PORT = os.environ.get("REDIS_PORT", "6379") REDIS_SCAN_CHUNK_SIZE = os.environ.get("REDIS_SCAN_CHUNK_SIZE", 10000) ALLOW_CACHE_MODES = os.environ.get("ALLOW_CACHE_MODES", False) DEBUG = os.environ.get("DEBUG", False) DB_NAME = os.environ.get("MYSQL_DB_NAME") DB_HOST = os.environ.get("MYSQL_DB_HOST", "localhost") DB_PORT = os.environ.get("MYSQL_DB_PORT", 3306) DB_USER = os.environ.get("MYSQL_DB_USER", "root") DB_PASS = os.environ.get("MYSQL_DB_PASS", "root") DB_CHARSET = os.environ.get("MYSQL_DB_CHARSET") SQLALCHEMY_DATABASE_URI = "mysql+pymysql://{user}:{password}@{host}:{port}/{database_name}".format( user=DB_USER, password=DB_PASS, host=DB_HOST, port=DB_PORT, database_name=DB_NAME ) if DB_CHARSET: SQLALCHEMY_DATABASE_URI += f"?charset={DB_CHARSET}" SQLALCHEMY_POOL_SIZE = int(os.environ.get("DB_POOL_SIZE", 30)) SQLALCHEMY_POOL_RECYCLE = int(os.environ.get("DB_POOL_RECYCLE", 7200)) SQLALCHEMY_MAX_OVERFLOW = int(os.environ.get("DB_POOL_SIZE", 40)) ALLOW_DB_REPLICATION = os.environ.get("ALLOW_DB_REPLICATION", False) if ALLOW_DB_REPLICATION: DB_SLAVE_NAME = os.environ.get("MYSQL_SLAVE_DB_NAME", DB_NAME) DB_SLAVE_HOST = os.environ.get("MYSQL_SLAVE_DB_HOST", "localhost") DB_SLAVE_PORT = os.environ.get("MYSQL_SLAVE_DB_PORT", 3306) DB_SLAVE_USER = os.environ.get("MYSQL_SLAVE_DB_USER", DB_USER) DB_SLAVE_PASS = os.environ.get("MYSQL_SLAVE_DB_PASS", DB_PASS) DB_SLAVE_CHARSET = os.environ.get("MYSQL_SLAVE_DB_CHARSET", DB_CHARSET) SQLALCHEMY_SLAVE_DATABASE_URI = "mysql+pymysql://{user}:{password}@{host}:{port}/{database_name}".format( user=DB_SLAVE_USER, password=DB_SLAVE_PASS, host=DB_SLAVE_HOST, port=DB_SLAVE_PORT, database_name=DB_SLAVE_NAME ) if DB_SLAVE_CHARSET: SQLALCHEMY_SLAVE_DATABASE_URI += f"?charset={DB_SLAVE_CHARSET}" SQLALCHEMY_BINDS = {"master": SQLALCHEMY_DATABASE_URI, "slave": SQLALCHEMY_SLAVE_DATABASE_URI} DB_POLICY_TYPE = os.environ.get("DB_REPLICATION_POLICY") TWILIO_ACCOUNT_SID = os.environ.get("TWILIO_ACCOUNT_SID")