import os from flask import Flask from src.errors.argument_exception import argument_exception from src.export.exporter_factory import exporter_factory from src.settings.settings_manager import settings_manager from src.logic.start_factory import start_factory from src.storage.storage import storage setman = settings_manager() start = None strg = None app = Flask(__name__) @app.route("/api/export//", methods=["GET"]) def get_export_format(storage_key: str, format: str): global setman, start, strg try: exp = exporter_factory().create(format) except argument_exception as e: return "Wrong format: " + e.error.error_text, 400 if storage_key not in strg.data: return "Key not found", 404 return app.response_class( response=exp.export_by_key(storage_key), status=200, mimetype=exp.strategy.mimetype, ) @app.route("/api/export/", methods=["GET"]) def get_export(storage_key: str): global setman, start, strg format = setman.settings.export_format exp = None format = format.lower().strip() fac = exporter_factory() if format == "csv": exp = fac.make_csv() elif format == "json": exp = fac.make_json() elif format == "markdown": exp = fac.make_markdown() if storage_key not in strg.data: return "Key not found", 404 return app.response_class( response=exp.export_by_key(storage_key), status=200, mimetype=exp.strategy.mimetype, ) # Инициализация приложения def run(): global setman, start, strg setman.open(os.path.dirname(__file__) + "/config/settings.json") strg = storage() start = start_factory(setman.settings, strg) start.create() app.run() if __name__ == "__main__": run()