Files
douyin-autojs-follower/modules/web/routes.go
2024-09-30 11:02:26 +08:00

67 lines
2.0 KiB
Go

package web
import (
"dyproxy/frontend"
_ "embed"
"github.com/gofiber/fiber/v3"
"github.com/gofiber/fiber/v3/middleware/basicauth"
"github.com/gofiber/fiber/v3/middleware/filesystem"
"github.com/gofiber/fiber/v3/middleware/redirect"
)
//go:embed ca.crt
var ca []byte
func WithRoutes() Option {
return func(s *WebServer) {
apiGroup := s.engine.Group("/api", basicauth.New(basicauth.Config{
Users: users,
}))
apiGroup.Get("/version", s.routeGetVersion)
apiGroup.Get("/version/file/+", s.routeGetVersionFile)
apiGroup.Get("/experts", s.routeGetExperts)
apiGroup.Get("/experts/:uid", s.routeGetExpert)
apiGroup.Post("/experts", s.routePostExperts)
apiGroup.Get("/experts/:uid/config", s.routeGetExpertConfig)
apiGroup.Patch("/experts/:uid/config", s.routePatchExpertConfig)
apiGroup.Patch("/experts/:uid/state", s.routePatchExpertState)
apiGroup.Get("/experts/:uid/follower", s.routeGetFollower)
apiGroup.Post("/followers", s.routePostFollower)
apiGroup.Get("/devices", s.routeGetDevices)
apiGroup.Get("/devices/:uuid", s.routeGetDevice)
apiGroup.Get("/devices/:uuid/follower", s.routeGetDeviceFollower)
apiGroup.Patch("/devices/:uuid/experts/:uid", s.routeSetDeviceExpert)
apiGroup.Patch("/devices/:uuid/state", s.routePatchDeviceState)
apiGroup.Post("/devices/:uuid/block", s.routePatchDeviceState)
s.engine.Get("/ca", func(c fiber.Ctx) error {
// send attach ment ca.crt from embeded file
c.Set(fiber.HeaderContentType, "application/x-x509-ca-cert")
c.Set(fiber.HeaderContentDisposition, "attachment; filename=ca.crt")
return c.Send(ca)
})
s.engine.Use(redirect.New(redirect.Config{
Rules: map[string]string{"/": "/index.html"},
StatusCode: 301,
}))
s.engine.Static("/static", config.Static, fiber.Static{
Compress: true,
ByteRange: true,
Download: true,
})
s.engine.Use(filesystem.New(filesystem.Config{
Root: frontend.Static,
PathPrefix: "dist",
Index: "/dist/index.html",
}))
}
}