mirror of
https://github.com/danielmiessler/Fabric.git
synced 2026-02-12 06:55:08 -05:00
### CHANGES - Introduce `cmd` directory for all main application binaries. - Move all Go packages into the `internal` directory. - Rename the `restapi` package to `server` for clarity. - Consolidate patterns and strategies into a new `data` directory. - Group all auxiliary scripts into a new `scripts` directory. - Move all documentation and images into a `docs` directory. - Update all Go import paths to reflect the new structure. - Adjust CI/CD workflows and build commands for new layout.
42 lines
880 B
Go
42 lines
880 B
Go
package restapi
|
|
|
|
import (
|
|
"log/slog"
|
|
|
|
"github.com/danielmiessler/fabric/internal/core"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func Serve(registry *core.PluginRegistry, address string, apiKey string) (err error) {
|
|
r := gin.New()
|
|
|
|
// Middleware
|
|
r.Use(gin.Logger())
|
|
r.Use(gin.Recovery())
|
|
|
|
if apiKey != "" {
|
|
r.Use(APIKeyMiddleware(apiKey))
|
|
} else {
|
|
slog.Warn("Starting REST API server without API key authentication. This may pose security risks.")
|
|
}
|
|
|
|
// Register routes
|
|
fabricDb := registry.Db
|
|
NewPatternsHandler(r, fabricDb.Patterns)
|
|
NewContextsHandler(r, fabricDb.Contexts)
|
|
NewSessionsHandler(r, fabricDb.Sessions)
|
|
NewChatHandler(r, registry, fabricDb)
|
|
NewYouTubeHandler(r, registry)
|
|
NewConfigHandler(r, fabricDb)
|
|
NewModelsHandler(r, registry.VendorManager)
|
|
NewStrategiesHandler(r)
|
|
|
|
// Start server
|
|
err = r.Run(address)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return
|
|
}
|