""" Default app configuration. """ import os from src.constants.core import ANDROID, IOS, 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)) 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_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" VENDOR_APPKEY = os.environ["VENDORAPI_APPKEY"] VENDOR_HOSTNAME = f"{os.environ['VENDORAPI_SCHEMA']}://{os.environ['VENDORAPI_HOSTNAME']}" VENDOR_ALBUMS_URL = { VENDOR_SPOTIFY: f"{VENDOR_HOSTNAME}/api/spotify/v1/albums", VENDOR_APPLE: f"{VENDOR_HOSTNAME}/api/apple/v1/albums", } VENDOR_TRACKS_URL = { VENDOR_SPOTIFY: f"{VENDOR_HOSTNAME}/api/spotify/v1/tracks", VENDOR_APPLE: f"{VENDOR_HOSTNAME}/api/apple/v1/tracks", } 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)) DSP_TRACKS_BULK_STREAMS_URL_V1 = DSP_API + "/api/analytics/v1/tracks-date-range-streams" # 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_ENGINE_OPTIONS = {"pool_size": 30, "pool_recycle": 7200, "max_overflow": 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") AGO_STORES_LINKS = { ANDROID: os.environ.get( "PLAY_MARKET_AGO_URL", "https://play.google.com/store/apps/details?id=com.sonymusic.apollogo" ), IOS: os.environ.get("APP_STORE_AGO_URL", "https://apps.apple.com/us/app/apollogo-sme/id1482330393"), } AMPLITUDE_CLIENT_ID = os.environ["AMPLITUDE_CLIENT_ID"] AMPLITUDE_DEVICE_ID = os.environ.get("AMPLITUDE_DEVICE_ID", "apollo-api-be") ELASTICSEARCH_URL = os.environ.get("ELASTICSEARCH_URL") ELASTICSEARCH_PLAYLISTS_INDEX = os.environ.get("ELASTICSEARCH_PLAYLISTS_INDEX", "sony_filtr_admin_search") NPS_SURVEY_RETRY_COUNT = int(os.environ.get("NPS_SURVEY_RETRY_COUNT", 3)) JSON_SORT_KEYS = bool(os.environ.get("JSON_SORT_KEYS", "")) ORIGINAL_STATUS_CODES_TO_BYPASS = os.environ.get("ORIGINAL_STATUS_CODES_TO_BYPASS", "404") if ORIGINAL_STATUS_CODES_TO_BYPASS: ORIGINAL_STATUS_CODES_TO_BYPASS = [int(i) for i in ORIGINAL_STATUS_CODES_TO_BYPASS.split(",")] PLAYLIST_DIGEST_MAJOR_MOVES_MIN_METRIC_DIFF = { "streams": int(os.environ.get("PLAYLIST_DIGEST_MAJOR_MOVES_MIN_METRIC_DIFF_STREAMS", 10000)), "followers": int(os.environ.get("PLAYLIST_DIGEST_MAJOR_MOVES_MIN_METRIC_DIFF_FOLLOWERS", 500)), } DD_TRACE_HEADERS = os.environ.get("DD_TRACE_HEADERS", "client-type,x-app-slug,x-type,x-version,x-data-timeout").split( "," ) SAVE_ADDED_DATES = bool(os.environ.get("SAVE_ADDED_DATES", ""))