Ajout de SEARXNG pour les recherches web
This commit is contained in:
1 parent
87eeb41364
commit
345129c7bf
30 files changed
+919
-166
No files matched your search
@@ -0,0 +1,123 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/labstack/echo/v5"
|
||||
"trankilou.fr/lassistanoque/backend/internal/domain"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/auth"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/tool"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/user"
|
||||
)
|
||||
|
||||
func NewToolGroup(
|
||||
prefix string,
|
||||
e *echo.Group,
|
||||
ToolService *tool.Service,
|
||||
userService *user.Service,
|
||||
middlewares ...echo.MiddlewareFunc) *echo.Group {
|
||||
|
||||
ToolHandler := &ToolHandler{
|
||||
ToolService: ToolService,
|
||||
userService: userService,
|
||||
}
|
||||
Tool := e.Group(prefix, middlewares...)
|
||||
|
||||
Tool.GET("/:space", ToolHandler.ListTools)
|
||||
Tool.GET("/:space/:tool", ToolHandler.GetTool)
|
||||
Tool.GET("/:space/:tool/params", ToolHandler.GetToolParams)
|
||||
Tool.PUT("/:space", ToolHandler.UpdateTool)
|
||||
Tool.POST("/:space", ToolHandler.CreateTool)
|
||||
//Tool.DELETE("/:space/:tool", ToolHandler.DeleteTool)
|
||||
|
||||
return Tool
|
||||
}
|
||||
|
||||
type ToolHandler struct {
|
||||
ToolService *tool.Service
|
||||
userService *user.Service
|
||||
}
|
||||
|
||||
func (h *ToolHandler) ListTools(c *echo.Context) error {
|
||||
userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
teamID := c.Param("space")
|
||||
Tools, err := h.ToolService.ListTools(userID, teamID)
|
||||
if err != nil {
|
||||
c.Logger().Error("error listing Tools", "error", err)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error listing Tools")
|
||||
}
|
||||
return c.JSON(http.StatusOK, Tools)
|
||||
}
|
||||
|
||||
func (h *ToolHandler) GetTool(c *echo.Context) error {
|
||||
userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
teamID := c.Param("space")
|
||||
ToolID := c.Param("tool")
|
||||
Tool, err := h.ToolService.GetTool(userID, teamID, ToolID)
|
||||
if err != nil {
|
||||
c.Logger().Error("error getting Tool", "error", err)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error getting Tool")
|
||||
}
|
||||
return c.JSON(http.StatusOK, Tool)
|
||||
}
|
||||
|
||||
func (h *ToolHandler) GetToolParams(c *echo.Context) error {
|
||||
userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
teamID := c.Param("space")
|
||||
toolID := c.Param("tool")
|
||||
tool, err := h.ToolService.GetTool(userID, teamID, toolID)
|
||||
if err != nil {
|
||||
c.Logger().Error("error getting Tool", "error", err, "teamid", teamID, "toolID", toolID)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error getting Tool")
|
||||
}
|
||||
toolImpl := h.ToolService.GetToolImpl(tool.Name)
|
||||
return c.JSON(http.StatusOK, toolImpl.Params())
|
||||
}
|
||||
|
||||
func (h *ToolHandler) CreateTool(c *echo.Context) error {
|
||||
userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
teamID := c.Param("space")
|
||||
var Tool domain.Tool
|
||||
err := c.Bind(&Tool)
|
||||
if err != nil {
|
||||
c.Logger().Error("error binding Tool", "error", err)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error binding Tool")
|
||||
}
|
||||
Tool.TeamID = teamID
|
||||
updTool, err := h.ToolService.CreateTool(userID, &Tool)
|
||||
if err != nil {
|
||||
c.Logger().Error("error creating Tool", "error", err)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error creating Tool")
|
||||
}
|
||||
return c.JSON(http.StatusOK, updTool)
|
||||
}
|
||||
|
||||
func (h *ToolHandler) UpdateTool(c *echo.Context) error {
|
||||
userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
teamID := c.Param("space")
|
||||
var Tool domain.Tool
|
||||
err := c.Bind(&Tool)
|
||||
if err != nil {
|
||||
c.Logger().Error("error binding Tool", "error", err)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error binding Tool")
|
||||
}
|
||||
Tool.TeamID = teamID
|
||||
updTool, err := h.ToolService.UpdateTool(userID, &Tool)
|
||||
if err != nil {
|
||||
c.Logger().Error("error updating Tool", "error", err)
|
||||
return echo.NewHTTPError(http.StatusBadRequest, "error updating Tool")
|
||||
}
|
||||
return c.JSON(http.StatusOK, updTool)
|
||||
}
|
||||
|
||||
// func (h *ToolHandler) DeleteTool(c *echo.Context) error {
|
||||
// userID := c.Get(auth.ContextUserIDKey).(string)
|
||||
// teamID := c.Param("space")
|
||||
// ToolID := c.Param("tool")
|
||||
// err := h.ToolService.DeleteTool(userID, teamID, ToolID)
|
||||
// if err != nil {
|
||||
// c.Logger().Error("error creating Tool", "error", err)
|
||||
// return echo.NewHTTPError(http.StatusBadRequest, "error creating Tool")
|
||||
// }
|
||||
// return c.JSON(http.StatusOK, ToolID)
|
||||
// }
|
||||
@@ -16,6 +16,7 @@ import (
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/chat"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/provider"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/storage"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/tool"
|
||||
"trankilou.fr/lassistanoque/backend/internal/service/user"
|
||||
)
|
||||
|
||||
@@ -42,6 +43,7 @@ type Dependencies struct {
|
||||
ProviderService *provider.Service
|
||||
AgentService *agent.Service
|
||||
ChatService *chat.Service
|
||||
ToolService *tool.Service
|
||||
TokenManager auth.TokenManager
|
||||
}
|
||||
|
||||
@@ -82,6 +84,7 @@ func NewRouter(deps Dependencies) *Router {
|
||||
_ = handlers.NewMiscGroup("/misc", api, deps.TokenManager.TokenMiddleware)
|
||||
_ = handlers.NewModelGroup("/provider", api, deps.ProviderService, deps.TokenManager.TokenMiddleware)
|
||||
_ = handlers.NewAgentGroup("/agent", api, deps.AgentService, deps.UserService, deps.TokenManager.TokenMiddleware)
|
||||
_ = handlers.NewToolGroup("/tool", api, deps.ToolService, deps.UserService, deps.TokenManager.TokenMiddleware)
|
||||
_ = handlers.NewTeamGroup("/team", api, deps.UserService, deps.TokenManager.TokenMiddleware)
|
||||
_ = handlers.NewChatGroup("/chat", api, deps.ChatService, deps.TokenManager.TokenMiddleware)
|
||||
|
||||
|
||||
Reference in new issue
Block a user