import logging
import multiprocessing
from flask import Flask
from lakesuperior.endpoints.admin import admin
from lakesuperior.endpoints.ldp import ldp
from lakesuperior.endpoints.main import main
from lakesuperior.endpoints.query import query
logger = logging.getLogger(__name__)
[docs]def create_app(app_conf):
'''
App factory.
Create a Flask app.
@param app_conf (dict) Configuration parsed from `application.yml` file.
'''
app = Flask(__name__)
app.config.update(app_conf)
pid = multiprocessing.current_process().pid
logger.info('Starting Lakesuperior HTTP server with PID: {}.'.format(pid))
app.register_blueprint(main)
app.register_blueprint(ldp, url_prefix='/ldp', url_defaults={
'url_prefix': 'ldp'
})
# Legacy endpoint. @TODO Deprecate.
app.register_blueprint(ldp, url_prefix='/rest', url_defaults={
'url_prefix': 'rest'
})
app.register_blueprint(query, url_prefix='/query')
app.register_blueprint(admin, url_prefix='/admin')
return app