Add support for endpoints without .view

This commit is contained in:
Deluan
2020-01-08 12:52:57 -05:00
committed by Deluan Quintão
parent 907c310c01
commit c9605862a1
+38 -34
View File
@@ -27,68 +27,70 @@ func Router() http.Handler {
r.Group(func(r chi.Router) { r.Group(func(r chi.Router) {
c := initSystemController() c := initSystemController()
r.HandleFunc("/ping.view", addMethod(c.Ping)) addEndpoint(r, "ping", c.Ping)
r.HandleFunc("/getLicense.view", addMethod(c.GetLicense)) addEndpoint(r, "getLicense", c.GetLicense)
}) })
r.Group(func(r chi.Router) { r.Group(func(r chi.Router) {
c := initBrowsingController() c := initBrowsingController()
r.HandleFunc("/getMusicFolders.view", addMethod(c.GetMusicFolders)) addEndpoint(r, "getMusicFolders", c.GetMusicFolders)
r.HandleFunc("/getIndexes.view", addMethod(c.GetIndexes)) addEndpoint(r, "getMusicFolders", c.GetMusicFolders)
r.HandleFunc("/getArtists.view", addMethod(c.GetArtists)) addEndpoint(r, "getIndexes", c.GetIndexes)
r.With(requiredParams("id")).HandleFunc("/getMusicDirectory.view", addMethod(c.GetMusicDirectory)) addEndpoint(r, "getArtists", c.GetArtists)
r.With(requiredParams("id")).HandleFunc("/getArtist.view", addMethod(c.GetArtist)) reqParams := r.With(requiredParams("id"))
r.With(requiredParams("id")).HandleFunc("/getAlbum.view", addMethod(c.GetAlbum)) addEndpoint(reqParams, "getMusicDirectory", c.GetMusicDirectory)
r.With(requiredParams("id")).HandleFunc("/getSong.view", addMethod(c.GetSong)) addEndpoint(reqParams, "getArtist", c.GetArtist)
addEndpoint(reqParams, "getAlbum", c.GetAlbum)
addEndpoint(reqParams, "getSong", c.GetSong)
}) })
r.Group(func(r chi.Router) { r.Group(func(r chi.Router) {
c := initAlbumListController() c := initAlbumListController()
r.HandleFunc("/getAlbumList.view", addMethod(c.GetAlbumList)) addEndpoint(r, "getAlbumList", c.GetAlbumList)
r.HandleFunc("/getAlbumList2.view", addMethod(c.GetAlbumList2)) addEndpoint(r, "getAlbumList2", c.GetAlbumList2)
r.HandleFunc("/getStarred.view", addMethod(c.GetStarred)) addEndpoint(r, "getStarred", c.GetStarred)
r.HandleFunc("/getStarred2.view", addMethod(c.GetStarred2)) addEndpoint(r, "getStarred2", c.GetStarred2)
r.HandleFunc("/getNowPlaying.view", addMethod(c.GetNowPlaying)) addEndpoint(r, "getNowPlaying", c.GetNowPlaying)
r.HandleFunc("/getRandomSongs.view", addMethod(c.GetRandomSongs)) addEndpoint(r, "getRandomSongs", c.GetRandomSongs)
}) })
r.Group(func(r chi.Router) { r.Group(func(r chi.Router) {
c := initMediaAnnotationController() c := initMediaAnnotationController()
r.HandleFunc("/setRating.view", addMethod(c.SetRating)) addEndpoint(r, "setRating", c.SetRating)
r.HandleFunc("/star.view", addMethod(c.Star)) addEndpoint(r, "star", c.Star)
r.HandleFunc("/unstar.view", addMethod(c.Unstar)) addEndpoint(r, "unstar", c.Unstar)
r.HandleFunc("/scrobble.view", addMethod(c.Scrobble)) addEndpoint(r, "scrobble", c.Scrobble)
}) })
r.Group(func(r chi.Router) { r.Group(func(r chi.Router) {
c := initPlaylistsController() c := initPlaylistsController()
r.HandleFunc("/getPlaylists.view", addMethod(c.GetPlaylists)) addEndpoint(r, "getPlaylists", c.GetPlaylists)
r.HandleFunc("/getPlaylist.view", addMethod(c.GetPlaylist)) addEndpoint(r, "getPlaylist", c.GetPlaylist)
r.HandleFunc("/createPlaylist.view", addMethod(c.CreatePlaylist)) addEndpoint(r, "createPlaylist", c.CreatePlaylist)
r.HandleFunc("/deletePlaylist.view", addMethod(c.DeletePlaylist)) addEndpoint(r, "deletePlaylist", c.DeletePlaylist)
r.HandleFunc("/updatePlaylist.view", addMethod(c.UpdatePlaylist)) addEndpoint(r, "updatePlaylist", c.UpdatePlaylist)
}) })
r.Group(func(r chi.Router) { r.Group(func(r chi.Router) {
c := initSearchingController() c := initSearchingController()
r.HandleFunc("/search2.view", addMethod(c.Search2)) addEndpoint(r, "search2", c.Search2)
r.HandleFunc("/search3.view", addMethod(c.Search3)) addEndpoint(r, "search3", c.Search3)
}) })
r.Group(func(r chi.Router) { r.Group(func(r chi.Router) {
c := initUsersController() c := initUsersController()
r.HandleFunc("/getUser.view", addMethod(c.GetUser)) addEndpoint(r, "getUser", c.GetUser)
}) })
r.Group(func(r chi.Router) { r.Group(func(r chi.Router) {
c := initMediaRetrievalController() c := initMediaRetrievalController()
r.HandleFunc("/getAvatar.view", addMethod(c.GetAvatar)) addEndpoint(r, "getAvatar", c.GetAvatar)
r.HandleFunc("/getCoverArt.view", addMethod(c.GetCoverArt)) addEndpoint(r, "getCoverArt", c.GetCoverArt)
}) })
r.Group(func(r chi.Router) { r.Group(func(r chi.Router) {
c := initStreamController() c := initStreamController()
r.HandleFunc("/stream.view", addMethod(c.Stream)) addEndpoint(r, "stream", c.Stream)
r.HandleFunc("/download.view", addMethod(c.Download)) addEndpoint(r, "download", c.Download)
}) })
return r return r
} }
func addMethod(method SubsonicHandler) http.HandlerFunc { func addEndpoint(r chi.Router, path string, f SubsonicHandler) {
return func(w http.ResponseWriter, r *http.Request) { handle := func(w http.ResponseWriter, r *http.Request) {
res, err := method(w, r) res, err := f(w, r)
if err != nil { if err != nil {
SendError(w, r, err) SendError(w, r, err)
return return
@@ -97,6 +99,8 @@ func addMethod(method SubsonicHandler) http.HandlerFunc {
SendResponse(w, r, res) SendResponse(w, r, res)
} }
} }
r.HandleFunc("/"+path, handle)
r.HandleFunc("/"+path+".view", handle)
} }
func SendError(w http.ResponseWriter, r *http.Request, err error) { func SendError(w http.ResponseWriter, r *http.Request, err error) {