"""Application configuration.""" import logging import os from secrets_manager.flask_ext import FlaskSecretsManager # Service information SERVICE_NAME = 'ows-notifications' SERVICE_VERSION = '1.0.0' AWS_REGION = os.environ.get('AWS_REGION') or 'us-east-1' AWS_ACCOUNT_ID = os.environ.get('AWS_ACCOUNT_ID') # Production environment PROD_ENVIRONMENT = 'prod' DEV_ENVIRONMENT = 'dev' QA_ENVIRONMENT = 'qa' TEST_ENVIRONMENT = 'test' ENVIRONMENT = os.environ.get('Environment', DEV_ENVIRONMENT) IS_DEV_MODE = os.environ.get('IS_DEV_MODE') == 'true' secrets_manager_client = FlaskSecretsManager( application_context=False, environment=ENVIRONMENT, service_name=SERVICE_NAME ) # Errors and loggers try: SENTRY_DSN = secrets_manager_client.get_cred('SENTRY_DSN') or None except: # noqa: E722 # If we can't get SENTRY_DSN for any reason we set it to None. SENTRY_DSN = None LOGGER_LEVEL = logging.INFO LOGGER_NAME = 'ows1' # Generic handlers HEALTH_CHECK = '/hello/' # exclude urls PERMISSIONS_UPDATED_URL = '/private/permissions/updated' ONLY_LOG_ACCESS_ERRORS = True if ENVIRONMENT == PROD_ENVIRONMENT else False # Swagger documentation path SWAGGER_FILE_PATH = 'spec/ows_notifications-1.0.0.yaml' # Stream (getstream.io) informations STREAM_API_KEY = secrets_manager_client.get_cred('STREAM_API_KEY') STREAM_API_SECRET = secrets_manager_client.get_cred('STREAM_API_SECRET') STREAM_API_REGION = secrets_manager_client.get_cred('STREAM_API_REGION') SEGMENT_WRITE_KEY = secrets_manager_client.get_cred('SEGMENT_WRITE_KEY') NEO4J_URL = secrets_manager_client.get_cred('NEO4J_URL') NEO4J_USERNAME = secrets_manager_client.get_cred('NEO4J_USERNAME') NEO4J_PASSWORD = secrets_manager_client.get_cred('NEO4J_PASSWORD') NEO4J_AURA_URL = secrets_manager_client.get_cred('NEO4J_AURA_URL') NEO4J_AURA_USERNAME = secrets_manager_client.get_cred('NEO4J_AURA_USERNAME') NEO4J_AURA_PASSWORD = secrets_manager_client.get_cred('NEO4J_AURA_PASSWORD') NEO4J_MAX_RETRY_TIME = os.environ.get('NEO4J_MAX_RETRY_TIME') or 30 # 30s NEO4J_DB_NAME = os.environ.get('NEO4J_DB_NAME', 'graph.db') # Email Configuration SES_SENDER = os.environ.get('SES_SENDER', 'donotreply@theorchard.com') SES_CHARSET = 'UTF-8' # Content Review CONTENT_REVIEW_EMAIL_OVERRIDE = os.environ.get('CONTENT_REVIEW_EMAIL_OVERRIDE') # SQS SQS_URL_TEMPLATE = 'https://sqs.{region}.amazonaws.com/{account}/{queue}' FANOUT_QUEUE_NAME = f'{ENVIRONMENT}-fanout-event-queue' FANOUT_QUEUE_URL = SQS_URL_TEMPLATE.format( region=AWS_REGION, account=AWS_ACCOUNT_ID, queue=FANOUT_QUEUE_NAME, ) NOTIFICATIONS_DELIVERY_QUEUE_NAME = os.environ.get( 'NOTIFICATIONS_DELIVERY_QUEUE_NAME', f'{ENVIRONMENT}-notifications' ) NOTIFICATIONS_DELIVERY_URL = SQS_URL_TEMPLATE.format( region=AWS_REGION, account=AWS_ACCOUNT_ID, queue=NOTIFICATIONS_DELIVERY_QUEUE_NAME, ) # Slack Configuration BULK_APP_SLACK_TOKEN = secrets_manager_client.get_cred('BULK_APP_SLACK_TOKEN') BULK_APP_SLACK_CHANNEL_ID = os.environ.get('BULK_APP_SLACK_CHANNEL_ID', '') # Redis REDIS_HOST = os.environ.get('REDIS_HOST') or None REDIS_PORT = int(os.environ.get('REDIS_PORT') or 6379)