diff --git a/server/ctrladmin/ctrl.go b/server/ctrladmin/ctrl.go index 0744dc2..d439964 100644 --- a/server/ctrladmin/ctrl.go +++ b/server/ctrladmin/ctrl.go @@ -116,12 +116,12 @@ type templateData struct { Playlists []*db.Playlist TranscodePreferences []*db.TranscodePreference TranscodeProfiles []string - // + CurrentLastFMAPIKey string CurrentLastFMAPISecret string DefaultListenBrainzURL string SelectedUser *db.User - // + Podcasts []*db.Podcast } diff --git a/server/ctrladmin/handlers.go b/server/ctrladmin/handlers.go index 10caada..529628a 100644 --- a/server/ctrladmin/handlers.go +++ b/server/ctrladmin/handlers.go @@ -92,7 +92,7 @@ func (c *Controller) ServeHome(r *http.Request) *Response { } // podcasts box c.DB.Find(&data.Podcasts) - // + return &Response{ template: "home.tmpl", data: data, diff --git a/server/ctrlsubsonic/handlers_playlist.go b/server/ctrlsubsonic/handlers_playlist.go index e589711..7cdec2f 100644 --- a/server/ctrlsubsonic/handlers_playlist.go +++ b/server/ctrlsubsonic/handlers_playlist.go @@ -16,7 +16,7 @@ import ( func playlistRender(c *Controller, playlist *db.Playlist) *spec.Playlist { user := &db.User{} c.DB.Where("id=?", playlist.UserID).Find(user) - // + resp := &spec.Playlist{ ID: playlist.ID, Name: playlist.Name, @@ -24,7 +24,7 @@ func playlistRender(c *Controller, playlist *db.Playlist) *spec.Playlist { Created: playlist.CreatedAt, SongCount: playlist.TrackCount, } - // + trackIDs := playlist.GetItems() resp.List = make([]*spec.TrackChild, len(trackIDs)) for i, id := range trackIDs { @@ -88,12 +88,14 @@ func (c *Controller) ServeCreatePlaylist(r *http.Request) *spec.Response { c.DB. Where("id=?", playlistID). FirstOrCreate(&playlist) - // ** begin update meta info + + // update meta info playlist.UserID = user.ID if val, err := params.Get("name"); err == nil { playlist.Name = val } - // ** begin replace song IDs + + // replace song IDs var trackIDs []int if p, err := params.GetIDList("songId"); err == nil { for _, i := range p { @@ -103,7 +105,7 @@ func (c *Controller) ServeCreatePlaylist(r *http.Request) *spec.Response { // Set the items of the playlist playlist.SetItems(trackIDs) c.DB.Save(playlist) - // + sub := spec.NewResponse() sub.Playlist = playlistRender(c, &playlist) return sub @@ -119,7 +121,8 @@ func (c *Controller) ServeUpdatePlaylist(r *http.Request) *spec.Response { c.DB. Where("id=?", playlistID). FirstOrCreate(&playlist) - // ** begin update meta info + + // update meta info playlist.UserID = user.ID if val, err := params.Get("name"); err == nil { playlist.Name = val @@ -128,20 +131,22 @@ func (c *Controller) ServeUpdatePlaylist(r *http.Request) *spec.Response { playlist.Comment = val } trackIDs := playlist.GetItems() - // ** begin delete items + + // delete items if p, err := params.GetIntList("songIndexToRemove"); err == nil { sort.Sort(sort.Reverse(sort.IntSlice(p))) for _, i := range p { trackIDs = append(trackIDs[:i], trackIDs[i+1:]...) } } - // ** begin add items + + // add items if p, err := params.GetIDList("songIdToAdd"); err == nil { for _, i := range p { trackIDs = append(trackIDs, i.Value) } } - // + playlist.SetItems(trackIDs) c.DB.Save(playlist) return spec.NewResponse() diff --git a/server/ctrlsubsonic/middleware.go b/server/ctrlsubsonic/middleware.go index 5dc2a7f..53ebf51 100644 --- a/server/ctrlsubsonic/middleware.go +++ b/server/ctrlsubsonic/middleware.go @@ -59,7 +59,7 @@ func (c *Controller) WithUser(next http.Handler) http.Handler { password, _ := params.Get("p") token, _ := params.Get("t") salt, _ := params.Get("s") - // + passwordAuth := token == "" && salt == "" tokenAuth := password == "" if tokenAuth == passwordAuth { diff --git a/server/ctrlsubsonic/params/params.go b/server/ctrlsubsonic/params/params.go index 62a2b75..8c9a248 100644 --- a/server/ctrlsubsonic/params/params.go +++ b/server/ctrlsubsonic/params/params.go @@ -1,24 +1,24 @@ // package params provides methods on url.Values for parsing params for the subsonic api -// + // the format of the functions are: // `Get[First|Or|FirstOr][Int|ID|Bool|TimeMs][List]` -// + // first component (key selection): // "" -> lookup the key as usual, err if not found // "First" -> lookup from a list of possible keys, err if none found // "Or" -> lookup the key as usual, return `or` if not found // "FirstOr" -> lookup from a list of possible keys, return `or` if not found -// + // second component (type selection): // "" -> parse the value as a string // "Int" -> parse the value as an integer // "ID" -> parse the value as an artist, track, album etc id // "Bool" -> parse the value as a boolean -// + // last component (list parsing with stacked keys, eg. `?a=1&a=2&a=3`): // "" -> return the first value, eg. `1` // "List" -> return all values, eg. `{1, 2, 3}` -// + // note: these bulk of these funcs were generated with vim macros, so let me know if // you see something wrong :) @@ -60,7 +60,8 @@ func parse(values []string, i interface{}) error { } var err error switch v := i.(type) { - // ** begin *T + + // *T case *string: *v, err = parseStr(values[0]) case *int: @@ -71,7 +72,8 @@ func parse(values []string, i interface{}) error { *v, err = parseBool(values[0]) case *time.Time: *v, err = parseTime(values[0]) - // ** begin *[]T + + // *[]T case *[]string: for _, value := range values { parsed, err := parseStr(value) @@ -143,7 +145,7 @@ func (p Params) getFirst(keys []string) []string { return nil } -// ** begin str {get, get first, get or, get first or} +// str {get, get first, get or, get first or} func (p Params) Get(key string) (string, error) { var ret string @@ -171,7 +173,7 @@ func (p Params) GetFirstOr(or string, keys ...string) string { return or } -// ** begin []str {get, get first, get or, get first or} +// []str {get, get first, get or, get first or} func (p Params) GetList(key string) ([]string, error) { var ret []string @@ -199,7 +201,7 @@ func (p Params) GetFirstOrList(or []string, keys ...string) []string { return or } -// ** begin int {get, get first, get or, get first or} +// int {get, get first, get or, get first or} func (p Params) GetInt(key string) (int, error) { var ret int @@ -227,7 +229,7 @@ func (p Params) GetFirstOrInt(or int, keys ...string) int { return or } -// ** begin []int {get, get first, get or, get first or} +// []int {get, get first, get or, get first or} func (p Params) GetIntList(key string) ([]int, error) { var ret []int @@ -255,7 +257,7 @@ func (p Params) GetFirstOrIntList(or []int, keys ...string) []int { return or } -// ** begin specid.ID {get, get first, get or, get first or} +// specid.ID {get, get first, get or, get first or} func (p Params) GetID(key string) (specid.ID, error) { var ret specid.ID @@ -283,7 +285,7 @@ func (p Params) GetFirstOrID(or specid.ID, keys ...string) specid.ID { return or } -// ** begin []specid.ID {get, get first, get or, get first or} +// []specid.ID {get, get first, get or, get first or} func (p Params) GetIDList(key string) ([]specid.ID, error) { var ret []specid.ID @@ -311,7 +313,7 @@ func (p Params) GetFirstOrIDList(or []specid.ID, keys ...string) []specid.ID { return or } -// ** begin bool {get, get first, get or, get first or} +// bool {get, get first, get or, get first or} func (p Params) GetBool(key string) (bool, error) { var ret bool @@ -339,7 +341,7 @@ func (p Params) GetFirstOrBool(or bool, keys ...string) bool { return or } -// ** begin []bool {get, get first, get or, get first or} +// []bool {get, get first, get or, get first or} func (p Params) GetBoolList(key string) ([]bool, error) { var ret []bool @@ -367,7 +369,7 @@ func (p Params) GetFirstOrBoolList(or []bool, keys ...string) []bool { return or } -// ** begin time {get, get first, get or, get first or} +// time {get, get first, get or, get first or} func (p Params) GetTime(key string) (time.Time, error) { var ret time.Time diff --git a/server/encode/encode.go b/server/encode/encode.go index 400134c..6978a66 100644 --- a/server/encode/encode.go +++ b/server/encode/encode.go @@ -208,7 +208,7 @@ func encode(out io.Writer, trackPath, cachePath string, profile Profile) error { // still unsure if buffer version (cmdOutputWrite) is any better than io.Copy-based one (cmdOutputCopy) // initial goal here is to start streaming response asap, with smallest ttfb. more testing needed // -- @spijet - // + // start up writers for cache file and http response go cmdOutputWrite(out, cacheFile, pipeReader) // run ffmpeg diff --git a/server/server.go b/server/server.go index 0abd40d..c7b3353 100644 --- a/server/server.go +++ b/server/server.go @@ -136,7 +136,8 @@ func setupMisc(r *mux.Router, ctrl *ctrlbase.Controller) { } func setupAdmin(r *mux.Router, ctrl *ctrladmin.Controller) { - // ** begin public routes (creates session) + + // public routes (creates session) r.Use(ctrl.WithSession) r.Handle("/login", ctrl.H(ctrl.ServeLogin)) r.Handle("/login_do", ctrl.HR(ctrl.ServeLoginDo)) // "raw" handler, updates session @@ -144,7 +145,7 @@ func setupAdmin(r *mux.Router, ctrl *ctrladmin.Controller) { staticHandler := http.StripPrefix("/admin", http.FileServer(http.FS(assets.Static))) r.PathPrefix("/static").Handler(staticHandler) - // ** begin user routes (if session is valid) + // user routes (if session is valid) routUser := r.NewRoute().Subrouter() routUser.Use(ctrl.WithUserSession) routUser.Handle("/logout", ctrl.HR(ctrl.ServeLogout)) // "raw" handler, updates session @@ -166,7 +167,7 @@ func setupAdmin(r *mux.Router, ctrl *ctrladmin.Controller) { routUser.Handle("/download_podcast_do", ctrl.H(ctrl.ServePodcastDownloadDo)) routUser.Handle("/update_podcast_do", ctrl.H(ctrl.ServePodcastUpdateDo)) - // ** begin admin routes (if session is valid, and is admin) + // admin routes (if session is valid, and is admin) routAdmin := routUser.NewRoute().Subrouter() routAdmin.Use(ctrl.WithAdminSession) routAdmin.Handle("/change_username", ctrl.H(ctrl.ServeChangeUsername)) @@ -194,7 +195,7 @@ func setupSubsonic(r *mux.Router, ctrl *ctrlsubsonic.Controller) { r.Use(ctrl.WithRequiredParams) r.Use(ctrl.WithUser) - // ** begin common + // common r.Handle("/getLicense{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetLicence)) r.Handle("/getMusicFolders{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetMusicFolders)) r.Handle("/getScanStatus{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetScanStatus)) @@ -217,12 +218,12 @@ func setupSubsonic(r *mux.Router, ctrl *ctrlsubsonic.Controller) { r.Handle("/createBookmark{_:(?:\\.view)?}", ctrl.H(ctrl.ServeCreateBookmark)) r.Handle("/deleteBookmark{_:(?:\\.view)?}", ctrl.H(ctrl.ServeDeleteBookmark)) - // ** begin raw + // raw r.Handle("/download{_:(?:\\.view)?}", ctrl.HR(ctrl.ServeDownload)) r.Handle("/getCoverArt{_:(?:\\.view)?}", ctrl.HR(ctrl.ServeGetCoverArt)) r.Handle("/stream{_:(?:\\.view)?}", ctrl.HR(ctrl.ServeStream)) - // ** begin browse by tag + // browse by tag r.Handle("/getAlbum{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetAlbum)) r.Handle("/getAlbumList2{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetAlbumListTwo)) r.Handle("/getArtist{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetArtist)) @@ -230,7 +231,7 @@ func setupSubsonic(r *mux.Router, ctrl *ctrlsubsonic.Controller) { r.Handle("/search3{_:(?:\\.view)?}", ctrl.H(ctrl.ServeSearchThree)) r.Handle("/getArtistInfo2{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetArtistInfoTwo)) - // ** begin browse by folder + // browse by folder r.Handle("/getIndexes{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetIndexes)) r.Handle("/getMusicDirectory{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetMusicDirectory)) r.Handle("/getAlbumList{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetAlbumList)) @@ -238,7 +239,7 @@ func setupSubsonic(r *mux.Router, ctrl *ctrlsubsonic.Controller) { r.Handle("/getGenres{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetGenres)) r.Handle("/getArtistInfo{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetArtistInfo)) - // ** begin podcasts + // podcasts r.Handle("/getPodcasts{_:(?:\\.view)?}", ctrl.H(ctrl.ServeGetPodcasts)) r.Handle("/downloadPodcastEpisode{_:(?:\\.view)?}", ctrl.H(ctrl.ServeDownloadPodcastEpisode)) r.Handle("/createPodcastChannel{_:(?:\\.view)?}", ctrl.H(ctrl.ServeCreatePodcastChannel))