Source code for canarieapi.app_object
"""
This module serves the purpose of centralizing the state object of Flask in a single place.
"""
# -- Standard lib ------------------------------------------------------------
import logging
import sys
from os import environ
# -- 3rd party modules -------------------------------------------------------
from flask import Flask
# -- Project specific --------------------------------------------------------
from canarieapi import default_configuration
from canarieapi.reverse_proxied import ReverseProxied
[docs]ch = logging.StreamHandler(sys.stdout)
ch.setFormatter(formatter)
APP.logger.handlers.clear() # backward compatibility to avoid duplicate log entries
APP.logger.addHandler(ch)
APP.logger.setLevel(logging.DEBUG)
# Handle Reverse Proxy setups
APP.wsgi_app = ReverseProxied(APP.wsgi_app)
# Config
APP.config.from_object(default_configuration)
if "CANARIE_API_CONFIG_FN" in environ:
APP.config.from_envvar("CANARIE_API_CONFIG_FN") # pragma: no cover
APP.logger.info("Loading custom configuration from %s", environ["CANARIE_API_CONFIG_FN"])
else:
APP.logger.info("Using default configuration")