mirror of
https://github.com/langgenius/dify.git
synced 2025-11-18 22:07:37 +00:00
Signed-off-by: lyzno1 <yuanyouhuilyz@gmail.com> Co-authored-by: Stream <Stream_2@qq.com> Co-authored-by: lyzno1 <92089059+lyzno1@users.noreply.github.com> Co-authored-by: zhsama <torvalds@linux.do> Co-authored-by: Harry <xh001x@hotmail.com> Co-authored-by: lyzno1 <yuanyouhuilyz@gmail.com> Co-authored-by: yessenia <yessenia.contact@gmail.com> Co-authored-by: hjlarry <hjlarry@163.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: WTW0313 <twwu@dify.ai> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
import logging
|
|
import re
|
|
|
|
from flask import jsonify, request
|
|
from werkzeug.exceptions import NotFound
|
|
|
|
from controllers.trigger import bp
|
|
from services.trigger.trigger_service import TriggerService
|
|
from services.trigger.trigger_subscription_builder_service import TriggerSubscriptionBuilderService
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
UUID_PATTERN = r"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
|
|
UUID_MATCHER = re.compile(UUID_PATTERN)
|
|
|
|
|
|
@bp.route("/plugin/<string:endpoint_id>", methods=["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"])
|
|
def trigger_endpoint(endpoint_id: str):
|
|
"""
|
|
Handle endpoint trigger calls.
|
|
"""
|
|
# endpoint_id must be UUID
|
|
if not UUID_MATCHER.match(endpoint_id):
|
|
raise NotFound("Invalid endpoint ID")
|
|
handling_chain = [
|
|
TriggerService.process_endpoint,
|
|
TriggerSubscriptionBuilderService.process_builder_validation_endpoint,
|
|
]
|
|
response = None
|
|
try:
|
|
for handler in handling_chain:
|
|
response = handler(endpoint_id, request)
|
|
if response:
|
|
break
|
|
if not response:
|
|
logger.error("Endpoint not found for {endpoint_id}")
|
|
return jsonify({"error": "Endpoint not found"}), 404
|
|
return response
|
|
except ValueError as e:
|
|
return jsonify({"error": "Endpoint processing failed", "message": str(e)}), 400
|
|
except Exception:
|
|
logger.exception("Webhook processing failed for {endpoint_id}")
|
|
return jsonify({"error": "Internal server error"}), 500
|