1
1

main.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import os
  2. from flask import Flask
  3. from src.errors.argument_exception import argument_exception
  4. from src.export.exporter_factory import exporter_factory
  5. from src.settings.settings_manager import settings_manager
  6. from src.logic.start_factory import start_factory
  7. from src.storage.storage import storage
  8. setman = settings_manager()
  9. start = None
  10. strg = None
  11. app = Flask(__name__)
  12. @app.route("/api/export/<storage_key>/<format>", methods=["GET"])
  13. def get_export_format(storage_key: str, format: str):
  14. global setman, start, strg
  15. try:
  16. exp = exporter_factory().create(format)
  17. except argument_exception as e:
  18. return "Wrong format: " + e.error.error_text, 400
  19. if storage_key not in strg.data:
  20. return "Key not found", 404
  21. return app.response_class(
  22. response=exp.export_by_key(storage_key),
  23. status=200,
  24. mimetype=exp.strategy.mimetype,
  25. )
  26. @app.route("/api/export/<storage_key>", methods=["GET"])
  27. def get_export(storage_key: str):
  28. global setman, start, strg
  29. format = setman.settings.export_format
  30. try:
  31. exp = exporter_factory().create(format)
  32. except argument_exception as e:
  33. return "Wrong format: " + e.error.error_text, 400
  34. if storage_key not in strg.data:
  35. return "Key not found", 404
  36. return app.response_class(
  37. response=exp.export_by_key(storage_key),
  38. status=200,
  39. mimetype=exp.strategy.mimetype,
  40. )
  41. # Инициализация приложения
  42. def run():
  43. global setman, start, strg
  44. setman.open(os.path.dirname(__file__) + "/config/settings.json")
  45. strg = storage()
  46. start = start_factory(setman.settings, strg)
  47. start.create()
  48. app.run()
  49. if __name__ == "__main__":
  50. run()