package main import ( "html/template" "log" "net/http" "time" "git.cliffbreak.de/Cliffbreak/tsviewer/config" "git.cliffbreak.de/Cliffbreak/tsviewer/features/channel" "git.cliffbreak.de/Cliffbreak/tsviewer/features/client" "git.cliffbreak.de/Cliffbreak/tsviewer/features/index" "git.cliffbreak.de/Cliffbreak/tsviewer/features/server" "git.cliffbreak.de/Cliffbreak/tsviewer/gui" "git.cliffbreak.de/Cliffbreak/tsviewer/service" "github.com/go-chi/chi" "github.com/go-chi/chi/middleware" ) func Routes(s service.Service, t template.Template) *chi.Mux { router := chi.NewRouter() router.Use( middleware.Logger, middleware.Timeout(5*time.Second), middleware.DefaultCompress, middleware.RedirectSlashes, middleware.Recoverer, ) router.Route("/v1", func(r chi.Router) { r.Mount("/channels", channel.APIRoutes(s)) r.Mount("/clients", client.APIRoutes(s)) r.Mount("/server", server.APIRoutes(s)) }) router.Route("/", func(r chi.Router) { r.Mount("/", index.GUIRoutes(t)) }) return router } func main() { config, err := config.New() if err != nil { log.Fatal(err) } service, err := service.New(*config) if err != nil { log.Fatal(err) } defer service.TSClient.Close() templates, err := gui.LoadTemplates() if err != nil { log.Fatal(err) } router := Routes(*service, *templates) log.Fatal("Handler: ", http.ListenAndServe(":8080", router)) }