1
1

main.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. exp = None
  31. format = format.lower().strip()
  32. fac = exporter_factory()
  33. if format == "csv":
  34. exp = fac.make_csv()
  35. elif format == "json":
  36. exp = fac.make_json()
  37. elif format == "markdown":
  38. exp = fac.make_markdown()
  39. if storage_key not in strg.data:
  40. return "Key not found", 404
  41. return app.response_class(
  42. response=exp.export_by_key(storage_key),
  43. status=200,
  44. mimetype=exp.strategy.mimetype,
  45. )
  46. # Инициализация приложения
  47. def run():
  48. global setman, start, strg
  49. setman.open(os.path.dirname(__file__) + "/config/settings.json")
  50. strg = storage()
  51. start = start_factory(setman.settings, strg)
  52. start.create()
  53. app.run()
  54. if __name__ == "__main__":
  55. run()