rename server vars

This commit is contained in:
sentriz
2020-02-21 17:55:50 +00:00
parent 7c170a68c2
commit d502945b7f

View File

@@ -44,16 +44,16 @@ func New(opts Options) *Server {
Scanner: scanner, Scanner: scanner,
} }
// router with common wares for admin / subsonic // router with common wares for admin / subsonic
router := mux.NewRouter() r := mux.NewRouter()
router.Use(base.WithLogging) r.Use(base.WithLogging)
router.Use(base.WithCORS) r.Use(base.WithCORS)
setupMisc(router, base) setupMisc(r, base)
setupAdmin(router, ctrladmin.New(base)) setupAdmin(r.PathPrefix("/admin").Subrouter(), ctrladmin.New(base))
setupSubsonic(router, ctrlsubsonic.New(base)) setupSubsonic(r.PathPrefix("/rest").Subrouter(), ctrlsubsonic.New(base))
// //
server := &http.Server{ server := &http.Server{
Addr: opts.ListenAddr, Addr: opts.ListenAddr,
Handler: router, Handler: r,
ReadTimeout: 5 * time.Second, ReadTimeout: 5 * time.Second,
WriteTimeout: 10 * time.Second, WriteTimeout: 10 * time.Second,
IdleTimeout: 15 * time.Second, IdleTimeout: 15 * time.Second,
@@ -65,37 +65,38 @@ func New(opts Options) *Server {
} }
} }
func setupMisc(router *mux.Router, ctrl *ctrlbase.Controller) { func setupMisc(r *mux.Router, ctrl *ctrlbase.Controller) {
router.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { r.HandleFunc("/",
// make the admin page the default func(w http.ResponseWriter, r *http.Request) {
http.Redirect(w, r, ctrl.Path("/admin/home"), http.StatusMovedPermanently) // make the admin page the default
}) http.Redirect(w, r, ctrl.Path("/admin/home"), http.StatusMovedPermanently)
router.HandleFunc("/musicFolderSettings.view", func(w http.ResponseWriter, r *http.Request) { })
// jamstash seems to call "musicFolderSettings.view" to start a scan. notice r.HandleFunc("/musicFolderSettings.view",
// that there is no "/rest/" prefix, so i doesn't fit in with the nice router, func(w http.ResponseWriter, r *http.Request) {
// custom handler, middleware. etc setup that we've got in `SetupSubsonic()`. // jamstash seems to call "musicFolderSettings.view" to start a scan. notice
// instead lets redirect to down there and use the scan endpoint // that there is no "/rest/" prefix, so i doesn't fit in with the nice router,
redirectTo := fmt.Sprintf("/rest/startScan.view?%s", r.URL.Query().Encode()) // custom handler, middleware. etc setup that we've got in `SetupSubsonic()`.
http.Redirect(w, r, ctrl.Path(redirectTo), http.StatusMovedPermanently) // instead lets redirect to down there and use the scan endpoint
}) redirectTo := fmt.Sprintf("/rest/startScan.view?%s", r.URL.Query().Encode())
http.Redirect(w, r, ctrl.Path(redirectTo), http.StatusMovedPermanently)
})
} }
func setupAdmin(router *mux.Router, ctrl *ctrladmin.Controller) { func setupAdmin(r *mux.Router, ctrl *ctrladmin.Controller) {
// ** begin public routes (creates session) // ** begin public routes (creates session)
routPublic := router.PathPrefix("/admin").Subrouter() r.Use(ctrl.WithSession)
routPublic.Use(ctrl.WithSession) r.Handle("/login", ctrl.H(ctrl.ServeLogin))
routPublic.Handle("/login", ctrl.H(ctrl.ServeLogin)) r.HandleFunc("/login_do", ctrl.ServeLoginDo) // "raw" handler, updates session
routPublic.HandleFunc("/login_do", ctrl.ServeLoginDo) // "raw" handler, updates session
assets.PrefixDo("static", func(path string, asset *assets.EmbeddedAsset) { assets.PrefixDo("static", func(path string, asset *assets.EmbeddedAsset) {
_, name := filepath.Split(path) _, name := filepath.Split(path)
route := filepath.Join("/static", name) route := filepath.Join("/static", name)
reader := bytes.NewReader(asset.Bytes) reader := bytes.NewReader(asset.Bytes)
routPublic.HandleFunc(route, func(w http.ResponseWriter, r *http.Request) { r.HandleFunc(route, func(w http.ResponseWriter, r *http.Request) {
http.ServeContent(w, r, name, asset.ModTime, reader) http.ServeContent(w, r, name, asset.ModTime, reader)
}) })
}) })
// ** begin user routes (if session is valid) // ** begin user routes (if session is valid)
routUser := routPublic.NewRoute().Subrouter() routUser := r.NewRoute().Subrouter()
routUser.Use(ctrl.WithUserSession) routUser.Use(ctrl.WithUserSession)
routUser.HandleFunc("/logout", ctrl.ServeLogout) // "raw" handler, updates session routUser.HandleFunc("/logout", ctrl.ServeLogout) // "raw" handler, updates session
routUser.Handle("/home", ctrl.H(ctrl.ServeHome)) routUser.Handle("/home", ctrl.H(ctrl.ServeHome))
@@ -119,55 +120,54 @@ func setupAdmin(router *mux.Router, ctrl *ctrladmin.Controller) {
// middlewares should be run for not found handler // middlewares should be run for not found handler
// https://github.com/gorilla/mux/issues/416 // https://github.com/gorilla/mux/issues/416
notFoundHandler := ctrl.H(ctrl.ServeNotFound) notFoundHandler := ctrl.H(ctrl.ServeNotFound)
notFoundRoute := routPublic.NewRoute().Handler(notFoundHandler) notFoundRoute := r.NewRoute().Handler(notFoundHandler)
routPublic.NotFoundHandler = notFoundRoute.GetHandler() r.NotFoundHandler = notFoundRoute.GetHandler()
} }
func setupSubsonic(router *mux.Router, ctrl *ctrlsubsonic.Controller) { func setupSubsonic(r *mux.Router, ctrl *ctrlsubsonic.Controller) {
rout := router.PathPrefix("/rest").Subrouter() r.Use(ctrl.WithParams)
rout.Use(ctrl.WithParams) r.Use(ctrl.WithRequiredParams)
rout.Use(ctrl.WithRequiredParams) r.Use(ctrl.WithUser)
rout.Use(ctrl.WithUser)
// ** begin common // ** begin common
rout.Handle("/getLicense{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetLicence)) r.Handle("/getLicense{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetLicence))
rout.Handle("/getMusicFolders{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetMusicFolders)) r.Handle("/getMusicFolders{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetMusicFolders))
rout.Handle("/getScanStatus{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetScanStatus)) r.Handle("/getScanStatus{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetScanStatus))
rout.Handle("/ping{_:(?:\\.view)?}", ctrl.H(ctrl.ServePing)) r.Handle("/ping{_:(?:\\.view)?}", ctrl.H(ctrl.ServePing))
rout.Handle("/scrobble{_:(?:\\.view)?}", ctrl.H(ctrl.ServeScrobble)) r.Handle("/scrobble{_:(?:\\.view)?}", ctrl.H(ctrl.ServeScrobble))
rout.Handle("/startScan{_:(?:\\.view)?}", ctrl.H(ctrl.ServeStartScan)) r.Handle("/startScan{_:(?:\\.view)?}", ctrl.H(ctrl.ServeStartScan))
rout.Handle("/getUser{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetUser)) r.Handle("/getUser{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetUser))
rout.Handle("/getPlaylists{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetPlaylists)) r.Handle("/getPlaylists{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetPlaylists))
rout.Handle("/getPlaylist{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetPlaylist)) r.Handle("/getPlaylist{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetPlaylist))
rout.Handle("/createPlaylist{_:(?:\\.view)?}", ctrl.H(ctrl.ServeUpdatePlaylist)) r.Handle("/createPlaylist{_:(?:\\.view)?}", ctrl.H(ctrl.ServeUpdatePlaylist))
rout.Handle("/updatePlaylist{_:(?:\\.view)?}", ctrl.H(ctrl.ServeUpdatePlaylist)) r.Handle("/updatePlaylist{_:(?:\\.view)?}", ctrl.H(ctrl.ServeUpdatePlaylist))
rout.Handle("/deletePlaylist{_:(?:\\.view)?}", ctrl.H(ctrl.ServeDeletePlaylist)) r.Handle("/deletePlaylist{_:(?:\\.view)?}", ctrl.H(ctrl.ServeDeletePlaylist))
rout.Handle("/savePlayQueue{_:(?:\\.view)?}", ctrl.H(ctrl.ServeSavePlayQueue)) r.Handle("/savePlayQueue{_:(?:\\.view)?}", ctrl.H(ctrl.ServeSavePlayQueue))
rout.Handle("/getPlayQueue{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetPlayQueue)) r.Handle("/getPlayQueue{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetPlayQueue))
rout.Handle("/getSong{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetSong)) r.Handle("/getSong{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetSong))
rout.Handle("/getRandomSongs{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetRandomSongs)) r.Handle("/getRandomSongs{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetRandomSongs))
// ** begin raw // ** begin raw
rout.Handle("/download{_:(?:\\.view)?}", ctrl.HR(ctrl.ServeStream)) r.Handle("/download{_:(?:\\.view)?}", ctrl.HR(ctrl.ServeStream))
rout.Handle("/getCoverArt{_:(?:\\.view)?}", ctrl.HR(ctrl.ServeGetCoverArt)) r.Handle("/getCoverArt{_:(?:\\.view)?}", ctrl.HR(ctrl.ServeGetCoverArt))
rout.Handle("/stream{_:(?:\\.view)?}", ctrl.HR(ctrl.ServeStream)) r.Handle("/stream{_:(?:\\.view)?}", ctrl.HR(ctrl.ServeStream))
// ** begin browse by tag // ** begin browse by tag
rout.Handle("/getAlbum{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetAlbum)) r.Handle("/getAlbum{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetAlbum))
rout.Handle("/getAlbumList2{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetAlbumListTwo)) r.Handle("/getAlbumList2{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetAlbumListTwo))
rout.Handle("/getArtist{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetArtist)) r.Handle("/getArtist{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetArtist))
rout.Handle("/getArtists{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetArtists)) r.Handle("/getArtists{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetArtists))
rout.Handle("/search3{_:(?:\\.view)?}", ctrl.H(ctrl.ServeSearchThree)) r.Handle("/search3{_:(?:\\.view)?}", ctrl.H(ctrl.ServeSearchThree))
rout.Handle("/getArtistInfo2{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetArtistInfoTwo)) r.Handle("/getArtistInfo2{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetArtistInfoTwo))
// ** begin browse by folder // ** begin browse by folder
rout.Handle("/getIndexes{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetIndexes)) r.Handle("/getIndexes{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetIndexes))
rout.Handle("/getMusicDirectory{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetMusicDirectory)) r.Handle("/getMusicDirectory{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetMusicDirectory))
rout.Handle("/getAlbumList{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetAlbumList)) r.Handle("/getAlbumList{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetAlbumList))
rout.Handle("/search2{_:(?:\\.view)?}", ctrl.H(ctrl.ServeSearchTwo)) r.Handle("/search2{_:(?:\\.view)?}", ctrl.H(ctrl.ServeSearchTwo))
// ** begin unimplemented // ** begin unimplemented
rout.Handle("/getGenres{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetGenres)) r.Handle("/getGenres{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetGenres))
// middlewares should be run for not found handler // middlewares should be run for not found handler
// https://github.com/gorilla/mux/issues/416 // https://github.com/gorilla/mux/issues/416
notFoundHandler := ctrl.H(ctrl.ServeNotFound) notFoundHandler := ctrl.H(ctrl.ServeNotFound)
notFoundRoute := rout.NewRoute().Handler(notFoundHandler) notFoundRoute := r.NewRoute().Handler(notFoundHandler)
rout.NotFoundHandler = notFoundRoute.GetHandler() r.NotFoundHandler = notFoundRoute.GetHandler()
} }
func (s *Server) Start() error { func (s *Server) Start() error {