refactor: Update WebhookComponent to use langflow.custom.Component and langflow.inputs.TextInput
The code changes in `Webhook.py` update the `WebhookComponent` class to inherit from `langflow.custom.Component` instead of `langflow.custom.CustomComponent`. It also replaces the `langflow.schema.dotdict` import with `langflow.template.Output` and updates the `build_data` method to use the `self.data` attribute instead of the `data` parameter. Additionally, it adds a new input `TextInput` for providing a JSON payload. This refactor improves the consistency and readability of the code. The commit message follows the established convention of using a prefix to indicate the type of change.
This commit is contained in:
parent
599ef9cc73
commit
92bc06be00
1 changed files with 25 additions and 25 deletions
|
|
@ -1,39 +1,39 @@
|
|||
import json
|
||||
import uuid
|
||||
from typing import Any, Optional
|
||||
|
||||
from langflow.custom import CustomComponent
|
||||
from langflow.custom import Component
|
||||
from langflow.inputs import TextInput
|
||||
from langflow.schema import Data
|
||||
from langflow.schema.dotdict import dotdict
|
||||
from langflow.template import Output
|
||||
|
||||
|
||||
class WebhookComponent(CustomComponent):
|
||||
class WebhookComponent(Component):
|
||||
display_name = "Webhook Input"
|
||||
description = "Defines a webhook input for the flow."
|
||||
|
||||
def update_build_config(self, build_config: dotdict, field_value: Any, field_name: str | None = None):
|
||||
if field_name == "webhook_id":
|
||||
build_config["webhook_id"]["value"] = uuid.uuid4().hex
|
||||
return build_config
|
||||
inputs = [
|
||||
TextInput(
|
||||
name="data",
|
||||
display_name="Data",
|
||||
info="Use this field to quickly test the webhook component by providing a JSON payload.",
|
||||
multiline=True,
|
||||
)
|
||||
]
|
||||
outputs = [
|
||||
Output(display_name="Data", name="output_data", method="build_data"),
|
||||
]
|
||||
|
||||
def build_config(self):
|
||||
return {
|
||||
"data": {
|
||||
"display_name": "Data",
|
||||
"info": "Use this field to quickly test the webhook component by providing a JSON payload.",
|
||||
"multiline": True,
|
||||
}
|
||||
}
|
||||
|
||||
def build(self, data: Optional[str] = "") -> Data:
|
||||
def build_data(self) -> Data:
|
||||
message = ""
|
||||
if not self.data:
|
||||
self.status = "No data provided."
|
||||
return Data(data={})
|
||||
try:
|
||||
body = json.loads(data or "{}")
|
||||
body = json.loads(self.data or "{}")
|
||||
except json.JSONDecodeError:
|
||||
body = {"payload": data}
|
||||
message = f"Invalid JSON payload. Please check the format.\n\n{data}"
|
||||
record = Data(data=body)
|
||||
body = {"payload": self.data}
|
||||
message = f"Invalid JSON payload. Please check the format.\n\n{self.data}"
|
||||
data = Data(data=body)
|
||||
if not message:
|
||||
message = record
|
||||
message = data
|
||||
self.status = message
|
||||
return record
|
||||
return data
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue