""" Service configs. """ import os from src.constants import APP_NAME, DEBUG_ENVS, ENV_LOCAL, ENV_PROD, AppExecutionTypes from src.enums import ServiceType ENVIRONMENT = os.environ.get("ENVIRONMENT", ENV_PROD).lower() IS_LOCAL = ENVIRONMENT == ENV_LOCAL DEBUG = ENVIRONMENT in DEBUG_ENVS LOCAL_API_KEY = os.environ.get("LOCAL_API_KEY") DISABLE_AUTH = bool(os.environ.get("DISABLE_AUTH")) SENTRY_DSN = os.environ.get("SENTRY_DSN", "") LAMBDA_FUNCTION_NAME = os.environ["LAMBDA_FUNCTION_NAME"] API_URL_PREFIX = "dev" if IS_LOCAL else "" # Just fake credentials for local run AWS_ACCESS_KEY_ID = os.environ.get("FAKE_AWS_ACCESS_KEY_ID", "") AWS_SECRET_ACCESS_KEY = os.environ.get("AWS_SECRET_ACCESS_KEY", "") ATLAS_BASE_URL = os.environ["ATLAS_BASE_URL"].rstrip("/") ATLAS_CLIENT_ID = os.environ["ATLAS_CLIENT_ID"] ATLAS_CLIENT_SECRET = os.environ["ATLAS_CLIENT_SECRET"] ATLAS_AUDIENCE = os.environ["ATLAS_AUDIENCE"] AUTH_URL = os.environ["AUTH_URL"].rstrip("/") IMAGE_BASE_URL = os.environ["IMAGE_BASE_URL"].rstrip("/") VENDOR_API_BASE_URL = os.environ["VENDOR_API_BASE_URL"].rstrip("/") VENDOR_API_CACHE_TIMEOUT = str(os.environ.get("VENDOR_API_CACHE_TIMEOUT", 15 * 30)) # available services are ServiceType int values separated by comma _ENABLED_SERVICE_TYPES = os.environ.get("ENABLED_SERVICE_TYPES", "5") ENABLED_SERVICE_TYPES = [ ServiceType(int(service_type)) for service_type in ( _ENABLED_SERVICE_TYPES.split(",") if _ENABLED_SERVICE_TYPES else [])] APP_EXECUTION_TYPE = os.environ.get("EXECUTION_TYPE", AppExecutionTypes.MAIN).lower() APP_FULL_NAME = f"{APP_NAME}-{APP_EXECUTION_TYPE}" USER_EXECUTION_SQS_URL = os.environ.get("USER_EXECUTION_SQS_URL") SCHEDULE_EXECUTION_SQS_URL = os.environ.get("SCHEDULE_EXECUTION_SQS_URL") MAX_PLAYLISTS_SYNC_CHUNK_SIZE = int(os.environ.get("MAX_PLAYLISTS_SYNC_CHUNK_SIZE", 50)) MAX_SQS_CHUNK_SIZE = int(os.environ.get("MAX_SQS_CHUNK_SIZE", 10)) SQS_RETRY_COUNT = int(os.environ.get("SQS_RETRY_COUNT", 4)) SQS_MAX_TIME = int(os.environ.get("SQS_RETRY_DELAY", 30)) # DSP # google GOOGLE_CLIENT_ID = os.environ["GOOGLE_CLIENT_ID"] GOOGLE_CLIENT_SECRET = os.environ["GOOGLE_CLIENT_SECRET"] GOOGLE_SCOPES = ["profile", "https://www.googleapis.com/auth/youtube.force-ssl"] # deezer DEEZER_APP_ID = os.environ["DEEZER_APP_ID"] DEEZER_SECRET = os.environ["DEEZER_SECRET"] DEEZER_PERMS = ["basic_access", "offline_access", "manage_library", "delete_library"] # spotify SPOTIFY_CLIENT_ID = os.environ["SPOTIFY_CLIENT_ID"] SPOTIFY_CLIENT_SECRET = os.environ["SPOTIFY_CLIENT_SECRET"] SPOTIFY_SCOPES = [ "playlist-read-private", "playlist-read-collaborative", "playlist-modify-private", "playlist-modify-public", ] # Apple Music APPLE_MUSICKIT_KEYID = os.environ["APPLE_MUSICKIT_KEYID"] APPLE_MUSICKIT_KEY = os.environ["APPLE_MUSICKIT_KEY"] APPLE_MUSICKIT_TEAM_ID = os.environ["APPLE_MUSICKIT_TEAM_ID"] MYSQL_DATABASE = os.environ["MYSQL_DATABASE"] MYSQL_HOST = os.environ["MYSQL_HOST"] MYSQL_PORT = os.environ.get("MYSQL_PORT", 3306) MYSQL_PASSWORD = os.environ["MYSQL_PASSWORD"] MYSQL_USER = os.environ["MYSQL_USER"] DB_CONNECTION_URI = ( f"mysql+mysqldb://{MYSQL_USER}:{MYSQL_PASSWORD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DATABASE}?charset=utf8mb4" ) DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%SZ" MARKET_ID_COOKIE_NAME = os.environ.get("MARKET_ID_COOKIE_NAME", "sa_marketid") API_RETRY_COUNT = int(os.environ.get("API_RETRY_COUNT", 3)) MAX_RETRY_TIMEOUT = int(os.environ.get("MAX_RETRY_TIMEOUT", 20)) CORS_HEADERS = os.environ.get("CORS_HEADERS") SKIP_NOT_FOUND_TRACKS = bool(os.environ.get("SKIP_NOT_FOUND_TRACKS", True)) ADD_TRACKS_CHUNK_SIZE = int(os.environ.get("ADD_TRACKS_CHUNK_SIZE", 50))