123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- 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/<storage_key>/<format>", 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/<storage_key>", 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()
|