tool.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package controllers
  2. import (
  3. "net/http"
  4. "github.com/gin-gonic/gin"
  5. "github.com/langgenius/dify-plugin-daemon/internal/service"
  6. "github.com/langgenius/dify-plugin-daemon/internal/types/app"
  7. "github.com/langgenius/dify-plugin-daemon/internal/types/entities/plugin_entities"
  8. "github.com/langgenius/dify-plugin-daemon/internal/types/entities/requests"
  9. )
  10. func InvokeTool(config *app.Config) gin.HandlerFunc {
  11. type request = plugin_entities.InvokePluginRequest[requests.RequestInvokeTool]
  12. return func(c *gin.Context) {
  13. BindPluginDispatchRequest(
  14. c,
  15. func(itr request) {
  16. service.InvokeTool(&itr, c, config.PluginMaxExecutionTimeout)
  17. },
  18. )
  19. }
  20. }
  21. func ValidateToolCredentials(config *app.Config) gin.HandlerFunc {
  22. type request = plugin_entities.InvokePluginRequest[requests.RequestValidateToolCredentials]
  23. return func(c *gin.Context) {
  24. BindPluginDispatchRequest(
  25. c,
  26. func(itr request) {
  27. service.ValidateToolCredentials(&itr, c, config.PluginMaxExecutionTimeout)
  28. },
  29. )
  30. }
  31. }
  32. func GetToolRuntimeParameters(config *app.Config) gin.HandlerFunc {
  33. type request = plugin_entities.InvokePluginRequest[requests.RequestGetToolRuntimeParameters]
  34. return func(c *gin.Context) {
  35. BindPluginDispatchRequest(
  36. c,
  37. func(itr request) {
  38. service.GetToolRuntimeParameters(&itr, c, config.PluginMaxExecutionTimeout)
  39. },
  40. )
  41. }
  42. }
  43. func ListTools(c *gin.Context) {
  44. BindRequest(c, func(request struct {
  45. TenantID string `uri:"tenant_id" validate:"required"`
  46. Page int `form:"page" validate:"required,min=1"`
  47. PageSize int `form:"page_size" validate:"required,min=1,max=256"`
  48. }) {
  49. c.JSON(http.StatusOK, service.ListTools(request.TenantID, request.Page, request.PageSize))
  50. })
  51. }
  52. func GetTool(c *gin.Context) {
  53. BindRequest(c, func(request struct {
  54. TenantID string `uri:"tenant_id" validate:"required"`
  55. PluginID string `form:"plugin_id" validate:"required"`
  56. Provider string `form:"provider" validate:"required"`
  57. }) {
  58. c.JSON(http.StatusOK, service.GetTool(request.TenantID, request.PluginID, request.Provider))
  59. })
  60. }
  61. func CheckToolExistence(c *gin.Context) {
  62. BindRequest(c, func(request struct {
  63. TenantID string `uri:"tenant_id" validate:"required"`
  64. ProviderIDS []service.RequestCheckToolExistence `json:"provider_ids" validate:"required,dive"`
  65. }) {
  66. c.JSON(http.StatusOK, service.CheckToolExistence(request.TenantID, request.ProviderIDS))
  67. })
  68. }