diff --git a/api/album_lists.go b/api/album_lists.go index ac35ee16a..1fdcaf2c9 100644 --- a/api/album_lists.go +++ b/api/album_lists.go @@ -53,6 +53,29 @@ func (c *AlbumListController) GetAlbumList() { c.SendResponse(response) } +func (c *AlbumListController) GetAlbumList2() { + typ := c.RequiredParamString("type", "Required string parameter 'type' is not present") + method, found := c.types[typ] + + if !found { + beego.Error("albumList2 type", typ, "not implemented!") + c.SendError(responses.ErrorGeneric, "Not implemented!") + } + + offset := c.ParamInt("offset", 0) + size := utils.MinInt(c.ParamInt("size", 0), 500) + + albums, err := method(offset, size) + if err != nil { + beego.Error("Error retrieving albums:", err) + c.SendError(responses.ErrorGeneric, "Internal Error") + } + + response := c.NewEmpty() + response.AlbumList2 = &responses.AlbumList{Album: c.ToAlbums(albums)} + c.SendResponse(response) +} + func (c *AlbumListController) GetStarred() { albums, mediaFiles, err := c.listGen.GetAllStarred() if err != nil { diff --git a/api/base_api_controller.go b/api/base_api_controller.go index da3a8d21e..dbb36f2e6 100644 --- a/api/base_api_controller.go +++ b/api/base_api_controller.go @@ -154,6 +154,9 @@ func (c *BaseAPIController) ToAlbum(entry engine.Entry) responses.Child { album := c.ToChild(entry) album.Name = album.Title album.Title = "" + album.Parent = "" + album.Album = "" + album.AlbumId = "" return album } diff --git a/api/responses/responses.go b/api/responses/responses.go index d16c58e17..b31ff8c9c 100644 --- a/api/responses/responses.go +++ b/api/responses/responses.go @@ -16,6 +16,7 @@ type Subsonic struct { Directory *Directory `xml:"directory,omitempty" json:"directory,omitempty"` User *User `xml:"user,omitempty" json:"user,omitempty"` AlbumList *AlbumList `xml:"albumList,omitempty" json:"albumList,omitempty"` + AlbumList2 *AlbumList `xml:"albumList2,omitempty" json:"albumList2,omitempty"` Playlists *Playlists `xml:"playlists,omitempty" json:"playlists,omitempty"` Playlist *PlaylistWithSongs `xml:"playlist,omitempty" json:"playlist,omitempty"` SearchResult2 *SearchResult2 `xml:"searchResult2,omitempty" json:"searchResult2,omitempty"` diff --git a/conf/router.go b/conf/router.go index 676529e61..1126034f0 100644 --- a/conf/router.go +++ b/conf/router.go @@ -40,6 +40,7 @@ func mapEndpoints() { beego.NSRouter("/setRating.view", &api.MediaAnnotationController{}, "*:SetRating"), beego.NSRouter("/getAlbumList.view", &api.AlbumListController{}, "*:GetAlbumList"), + beego.NSRouter("/getAlbumList2.view", &api.AlbumListController{}, "*:GetAlbumList2"), beego.NSRouter("/getStarred.view", &api.AlbumListController{}, "*:GetStarred"), beego.NSRouter("/getNowPlaying.view", &api.AlbumListController{}, "*:GetNowPlaying"),