53 lines
1.8 KiB
Go
Executable File
53 lines
1.8 KiB
Go
Executable File
package http
|
|
|
|
import (
|
|
"github.com/go-chi/chi/v5"
|
|
"net/http"
|
|
)
|
|
|
|
type Router struct {
|
|
softwareController *SoftwareController
|
|
softwareUpdaterController *SoftwareUpdaterController
|
|
downloadController *DownloadController
|
|
playController *PlayController
|
|
rootController *RootController
|
|
}
|
|
|
|
func NewRouter(
|
|
softwareController *SoftwareController,
|
|
softwareUpdaterController *SoftwareUpdaterController,
|
|
downloadController *DownloadController,
|
|
playController *PlayController,
|
|
rootController *RootController,
|
|
) *Router {
|
|
return &Router{
|
|
softwareController: softwareController,
|
|
softwareUpdaterController: softwareUpdaterController,
|
|
downloadController: downloadController,
|
|
playController: playController,
|
|
rootController: rootController,
|
|
}
|
|
}
|
|
|
|
func (r *Router) Init() *chi.Mux {
|
|
router := chi.NewRouter()
|
|
|
|
router.Get("/", r.rootController.index)
|
|
router.Get("/softwares", r.softwareController.index)
|
|
router.Get("/update", r.softwareUpdaterController.update)
|
|
router.Get("/releases/{name}", r.softwareController.releases)
|
|
router.Get("/download/{name}/source", r.downloadController.GetLatestSource)
|
|
router.Get("/download/{name}/cartridge", r.downloadController.GetLatestCartridge)
|
|
router.Get("/download/{name}/{version}/source", r.downloadController.GetSource)
|
|
router.Get("/download/{name}/{version}/cartridge", r.downloadController.GetCartridge)
|
|
router.Get("/play/{name}", r.playController.PlayV1)
|
|
router.Get("/play/{name}/content*", r.playController.ServeContentV1)
|
|
router.Get("/play/{name}/{version}", r.playController.Play)
|
|
router.Get("/play/{name}/{version}/content*", r.playController.ServeContent)
|
|
|
|
fs := http.FileServer(http.Dir("assets"))
|
|
router.Handle("/assets/*", http.StripPrefix("/assets/", fs))
|
|
|
|
return router
|
|
}
|