Source code for search.factory

"""Application factory for references service components."""

import logging

from flask import Flask
from flask_s3 import FlaskS3

from arxiv.base import Base
from arxiv.base.middleware import wrap, request_logs
from search.routes import ui, api
from search.services import index
from search.converters import ArchiveConverter
from search.encode import ISO8601JSONEncoder

from arxiv.users import auth

s3 = FlaskS3()


[docs]def create_ui_web_app() -> Flask: """Initialize an instance of the search frontend UI web application.""" logging.getLogger('boto').setLevel(logging.ERROR) logging.getLogger('boto3').setLevel(logging.ERROR) logging.getLogger('botocore').setLevel(logging.ERROR) app = Flask('search') app.config.from_pyfile('config.py') app.url_map.converters['archive'] = ArchiveConverter index.init_app(app) Base(app) app.register_blueprint(ui.blueprint) s3.init_app(app) wrap(app, [request_logs.ClassicLogsMiddleware]) return app
[docs]def create_api_web_app() -> Flask: """Initialize an instance of the search frontend UI web application.""" logging.getLogger('boto').setLevel(logging.ERROR) logging.getLogger('boto3').setLevel(logging.ERROR) logging.getLogger('botocore').setLevel(logging.ERROR) app = Flask('search') app.json_encoder = ISO8601JSONEncoder app.config.from_pyfile('config.py') index.init_app(app) Base(app) auth.Auth(app) app.register_blueprint(api.blueprint) wrap(app, [request_logs.ClassicLogsMiddleware, auth.middleware.AuthMiddleware]) for error, handler in api.exceptions.get_handlers(): app.errorhandler(error)(handler) return app