mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-25 07:00:48 +09:00
87 lines
2.1 KiB
Go
87 lines
2.1 KiB
Go
package server
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/labstack/echo/v4"
|
|
"github.com/labstack/echo/v4/middleware"
|
|
|
|
"github.com/memohai/memoh/internal/auth"
|
|
"github.com/memohai/memoh/internal/handlers"
|
|
)
|
|
|
|
type Server struct {
|
|
echo *echo.Echo
|
|
addr string
|
|
}
|
|
|
|
func NewServer(addr string, jwtSecret string, pingHandler *handlers.PingHandler, authHandler *handlers.AuthHandler, memoryHandler *handlers.MemoryHandler, embeddingsHandler *handlers.EmbeddingsHandler, chatHandler *handlers.ChatHandler, swaggerHandler *handlers.SwaggerHandler, providersHandler *handlers.ProvidersHandler, modelsHandler *handlers.ModelsHandler, settingsHandler *handlers.SettingsHandler, historyHandler *handlers.HistoryHandler, scheduleHandler *handlers.ScheduleHandler, subagentHandler *handlers.SubagentHandler, containerdHandler *handlers.ContainerdHandler) *Server {
|
|
if addr == "" {
|
|
addr = ":8080"
|
|
}
|
|
|
|
e := echo.New()
|
|
e.HideBanner = true
|
|
e.Use(middleware.Recover())
|
|
e.Use(middleware.RequestLogger())
|
|
e.Use(auth.JWTMiddleware(jwtSecret, func(c echo.Context) bool {
|
|
path := c.Request().URL.Path
|
|
if path == "/ping" || path == "/api/swagger.json" || path == "/auth/login" {
|
|
return true
|
|
}
|
|
if strings.HasPrefix(path, "/api/docs") {
|
|
return true
|
|
}
|
|
return false
|
|
}))
|
|
|
|
if pingHandler != nil {
|
|
pingHandler.Register(e)
|
|
}
|
|
if authHandler != nil {
|
|
authHandler.Register(e)
|
|
}
|
|
if memoryHandler != nil {
|
|
memoryHandler.Register(e)
|
|
}
|
|
if embeddingsHandler != nil {
|
|
embeddingsHandler.Register(e)
|
|
}
|
|
if chatHandler != nil {
|
|
chatHandler.Register(e)
|
|
}
|
|
if swaggerHandler != nil {
|
|
swaggerHandler.Register(e)
|
|
}
|
|
if settingsHandler != nil {
|
|
settingsHandler.Register(e)
|
|
}
|
|
if historyHandler != nil {
|
|
historyHandler.Register(e)
|
|
}
|
|
if scheduleHandler != nil {
|
|
scheduleHandler.Register(e)
|
|
}
|
|
if subagentHandler != nil {
|
|
subagentHandler.Register(e)
|
|
}
|
|
if providersHandler != nil {
|
|
providersHandler.Register(e)
|
|
}
|
|
if modelsHandler != nil {
|
|
modelsHandler.Register(e)
|
|
}
|
|
if containerdHandler != nil {
|
|
containerdHandler.Register(e)
|
|
}
|
|
|
|
return &Server{
|
|
echo: e,
|
|
addr: addr,
|
|
}
|
|
}
|
|
|
|
func (s *Server) Start() error {
|
|
return s.echo.Start(s.addr)
|
|
}
|