package api import ( "github.com/astaxie/beego" "github.com/deluan/gosonic/api/responses" "github.com/deluan/gosonic/engine" "github.com/deluan/gosonic/utils" ) type SearchingController struct { BaseAPIController search engine.Search } func (c *SearchingController) Prepare() { utils.ResolveDependencies(&c.search) } func (c *SearchingController) Search2() { query := c.RequiredParamString("query", "Parameter query required") artistCount := c.ParamInt("artistCount", 20) artistOffset := c.ParamInt("artistOffset", 0) albumCount := c.ParamInt("albumCount", 20) albumOffset := c.ParamInt("albumOffset", 0) songCount := c.ParamInt("songCount", 20) songOffset := c.ParamInt("songOffset", 0) as, err := c.search.SearchArtist(query, artistOffset, artistCount) if err != nil { beego.Error("Error searching for Artists:", err) } als, err := c.search.SearchAlbum(query, albumOffset, albumCount) if err != nil { beego.Error("Error searching for Albums:", err) } mfs, err := c.search.SearchSong(query, songOffset, songCount) if err != nil { beego.Error("Error searching for MediaFiles:", err) } response := c.NewEmpty() searchResult2 := &responses.SearchResult2{} searchResult2.Artist = make([]responses.Artist, len(as)) for i, e := range as { searchResult2.Artist[i] = responses.Artist{Id: e.Id, Name: e.Title} } searchResult2.Album = make([]responses.Child, len(als)) for i, e := range als { searchResult2.Album[i] = c.ToChild(e) } searchResult2.Song = make([]responses.Child, len(mfs)) for i, e := range mfs { searchResult2.Song[i] = c.ToChild(e) } response.SearchResult2 = searchResult2 c.SendResponse(response) }