endpoint.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. from flask_login import current_user
  2. from flask_restful import Resource, reqparse
  3. from werkzeug.exceptions import Forbidden
  4. from controllers.console import api
  5. from controllers.console.setup import setup_required
  6. from controllers.console.wraps import account_initialization_required
  7. from libs.login import login_required
  8. from services.plugin.endpoint_service import EndpointService
  9. class EndpointCreateApi(Resource):
  10. @setup_required
  11. @login_required
  12. @account_initialization_required
  13. def post(self):
  14. user = current_user
  15. if not user.is_admin_or_owner:
  16. raise Forbidden()
  17. parser = reqparse.RequestParser()
  18. parser.add_argument("plugin_unique_identifier", type=str, required=True)
  19. parser.add_argument("settings", type=dict, required=True)
  20. parser.add_argument("name", type=str, required=True)
  21. args = parser.parse_args()
  22. plugin_unique_identifier = args["plugin_unique_identifier"]
  23. settings = args["settings"]
  24. name = args["name"]
  25. return EndpointService.create_endpoint(
  26. tenant_id=user.current_tenant_id,
  27. user_id=user.id,
  28. plugin_unique_identifier=plugin_unique_identifier,
  29. name=name,
  30. settings=settings,
  31. )
  32. class EndpointListApi(Resource):
  33. @setup_required
  34. @login_required
  35. @account_initialization_required
  36. def get(self):
  37. user = current_user
  38. return EndpointService.list_endpoints(
  39. tenant_id=user.current_tenant_id,
  40. user_id=user.id,
  41. )
  42. class EndpointDeleteApi(Resource):
  43. @setup_required
  44. @login_required
  45. @account_initialization_required
  46. def post(self):
  47. user = current_user
  48. parser = reqparse.RequestParser()
  49. parser.add_argument("endpoint_id", type=str, required=True)
  50. args = parser.parse_args()
  51. endpoint_id = args["endpoint_id"]
  52. return EndpointService.delete_endpoint(
  53. tenant_id=user.current_tenant_id, user_id=user.id, endpoint_id=endpoint_id
  54. )
  55. class EndpointUpdateApi(Resource):
  56. @setup_required
  57. @login_required
  58. @account_initialization_required
  59. def post(self):
  60. user = current_user
  61. parser = reqparse.RequestParser()
  62. parser.add_argument("endpoint_id", type=str, required=True)
  63. parser.add_argument("settings", type=dict, required=True)
  64. parser.add_argument("name", type=str, required=True)
  65. args = parser.parse_args()
  66. endpoint_id = args["endpoint_id"]
  67. settings = args["settings"]
  68. name = args["name"]
  69. return EndpointService.update_endpoint(
  70. tenant_id=user.current_tenant_id,
  71. user_id=user.id,
  72. endpoint_id=endpoint_id,
  73. name=name,
  74. settings=settings,
  75. )
  76. class EndpointEnableApi(Resource):
  77. @setup_required
  78. @login_required
  79. @account_initialization_required
  80. def post(self):
  81. user = current_user
  82. parser = reqparse.RequestParser()
  83. parser.add_argument("endpoint_id", type=str, required=True)
  84. args = parser.parse_args()
  85. endpoint_id = args["endpoint_id"]
  86. return EndpointService.enable_endpoint(
  87. tenant_id=user.current_tenant_id, user_id=user.id, endpoint_id=endpoint_id
  88. )
  89. class EndpointDisableApi(Resource):
  90. @setup_required
  91. @login_required
  92. @account_initialization_required
  93. def post(self):
  94. user = current_user
  95. parser = reqparse.RequestParser()
  96. parser.add_argument("endpoint_id", type=str, required=True)
  97. args = parser.parse_args()
  98. endpoint_id = args["endpoint_id"]
  99. return EndpointService.disable_endpoint(
  100. tenant_id=user.current_tenant_id, user_id=user.id, endpoint_id=endpoint_id
  101. )
  102. api.add_resource(EndpointCreateApi, "/workspaces/current/endpoints/create")
  103. api.add_resource(EndpointListApi, "/workspaces/current/endpoints/list")
  104. api.add_resource(EndpointDeleteApi, "/workspaces/current/endpoints/delete")
  105. api.add_resource(EndpointUpdateApi, "/workspaces/current/endpoints/update")
  106. api.add_resource(EndpointEnableApi, "/workspaces/current/endpoints/enable")
  107. api.add_resource(EndpointDisableApi, "/workspaces/current/endpoints/disable")