Files
teletypegames/http/router.go
T
2026-01-28 19:05:40 +01:00

53 lines
1.7 KiB
Go
Executable File

package http
import (
"net/http"
"github.com/go-chi/chi/v5"
)
type Router struct {
softwareController *SoftwareController
softwareUpdaterController *SoftwareUpdaterController
downloadController *DownloadController
playController *PlayController
rootController *RootController
}
func NewRouter(
software_controller *SoftwareController,
software_updater_controller *SoftwareUpdaterController,
download_controller *DownloadController,
play_controller *PlayController,
root_controller *RootController,
) *Router {
return &Router{
softwareController: software_controller,
softwareUpdaterController: software_updater_controller,
downloadController: download_controller,
playController: play_controller,
rootController: root_controller,
}
}
func (r *Router) Init() *chi.Mux {
router := chi.NewRouter()
router.Get("/", r.rootController.Index)
router.Get("/software", r.softwareController.Index)
router.Get("/software/{name}", r.softwareController.Show)
router.Get("/update", r.softwareUpdaterController.Update)
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}/{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
}