mirror of
https://github.com/langgenius/dify.git
synced 2026-11-11 05:41:09 +08:00
47 lines
2.1 KiB
Python
47 lines
2.1 KiB
Python
"""Adapt plugin event declarations and invocation without exposing provider controllers."""
|
|
|
|
from collections.abc import Mapping
|
|
from typing import Any
|
|
|
|
from core.plugin.entities.request import TriggerInvokeEventResponse
|
|
from core.plugin.impl.trigger import PluginTriggerClient
|
|
from core.plugin.utils.http_parser import deserialize_request
|
|
from core.trigger.errors import EventIgnoreError
|
|
from core.trigger.trigger_manager import TriggerManager
|
|
from models.provider_ids import TriggerProviderID
|
|
from services.trigger.event_service import PreparedTriggerEvent, TriggerEventDefinition
|
|
|
|
|
|
class PluginTriggerEventGateway:
|
|
def describe(self, *, tenant_id: str, provider_id: TriggerProviderID, event_name: str) -> TriggerEventDefinition:
|
|
provider = TriggerManager.get_trigger_provider(tenant_id=tenant_id, provider_id=provider_id)
|
|
identity = provider.entity.identity
|
|
return TriggerEventDefinition(
|
|
plugin_unique_identifier=provider.plugin_unique_identifier,
|
|
provider_name=identity.name,
|
|
icon=identity.icon or "",
|
|
icon_dark=identity.icon_dark or "",
|
|
parameters=provider.get_event_parameters(event_name=event_name),
|
|
)
|
|
|
|
def invoke(
|
|
self, *, event: PreparedTriggerEvent, user_id: str, parameters: Mapping[str, Any]
|
|
) -> TriggerInvokeEventResponse:
|
|
runtime = event.subscription
|
|
client = PluginTriggerClient(plugin_unique_identifier=event.definition.plugin_unique_identifier)
|
|
try:
|
|
return client.invoke_trigger_event(
|
|
tenant_id=runtime.tenant_id,
|
|
user_id=user_id,
|
|
provider=runtime.provider_id,
|
|
event_name=event.event_name,
|
|
parameters=parameters,
|
|
credentials=runtime.credentials,
|
|
credential_type=runtime.credential_type,
|
|
subscription=runtime.subscription,
|
|
request=deserialize_request(event.raw_request),
|
|
payload=event.payload,
|
|
)
|
|
except EventIgnoreError:
|
|
return TriggerInvokeEventResponse(variables={}, cancelled=True)
|