Removed Beego routing/controllers, converted to Chi.
Also introduced Wire for dependency injection
This commit is contained in:
+34
-24
@@ -2,15 +2,14 @@ package api
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/astaxie/beego"
|
||||
"github.com/cloudsonic/sonic-server/api/responses"
|
||||
"github.com/cloudsonic/sonic-server/engine"
|
||||
"github.com/cloudsonic/sonic-server/utils"
|
||||
)
|
||||
|
||||
type SearchingController struct {
|
||||
BaseAPIController
|
||||
search engine.Search
|
||||
query string
|
||||
artistCount int
|
||||
@@ -21,18 +20,23 @@ type SearchingController struct {
|
||||
songOffset int
|
||||
}
|
||||
|
||||
func (c *SearchingController) Prepare() {
|
||||
utils.ResolveDependencies(&c.search)
|
||||
func NewSearchingController(search engine.Search) *SearchingController {
|
||||
return &SearchingController{search: search}
|
||||
}
|
||||
|
||||
func (c *SearchingController) getParams() {
|
||||
c.query = c.RequiredParamString("query", "Parameter query required")
|
||||
c.artistCount = c.ParamInt("artistCount", 20)
|
||||
c.artistOffset = c.ParamInt("artistOffset", 0)
|
||||
c.albumCount = c.ParamInt("albumCount", 20)
|
||||
c.albumOffset = c.ParamInt("albumOffset", 0)
|
||||
c.songCount = c.ParamInt("songCount", 20)
|
||||
c.songOffset = c.ParamInt("songOffset", 0)
|
||||
func (c *SearchingController) getParams(r *http.Request) error {
|
||||
var err error
|
||||
c.query, err = RequiredParamString(r, "query", "Parameter query required")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
c.artistCount = ParamInt(r, "artistCount", 20)
|
||||
c.artistOffset = ParamInt(r, "artistOffset", 0)
|
||||
c.albumCount = ParamInt(r, "albumCount", 20)
|
||||
c.albumOffset = ParamInt(r, "albumOffset", 0)
|
||||
c.songCount = ParamInt(r, "songCount", 20)
|
||||
c.songOffset = ParamInt(r, "songOffset", 0)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *SearchingController) searchAll() (engine.Entries, engine.Entries, engine.Entries) {
|
||||
@@ -53,27 +57,33 @@ func (c *SearchingController) searchAll() (engine.Entries, engine.Entries, engin
|
||||
return mfs, als, as
|
||||
}
|
||||
|
||||
func (c *SearchingController) Search2() {
|
||||
c.getParams()
|
||||
func (c *SearchingController) Search2(w http.ResponseWriter, r *http.Request) (*responses.Subsonic, error) {
|
||||
err := c.getParams(r)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
mfs, als, as := c.searchAll()
|
||||
|
||||
response := c.NewEmpty()
|
||||
response := 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 = c.ToChildren(als)
|
||||
searchResult2.Song = c.ToChildren(mfs)
|
||||
searchResult2.Album = ToChildren(als)
|
||||
searchResult2.Song = ToChildren(mfs)
|
||||
response.SearchResult2 = searchResult2
|
||||
c.SendResponse(response)
|
||||
return response, nil
|
||||
}
|
||||
|
||||
func (c *SearchingController) Search3() {
|
||||
c.getParams()
|
||||
func (c *SearchingController) Search3(w http.ResponseWriter, r *http.Request) (*responses.Subsonic, error) {
|
||||
err := c.getParams(r)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
mfs, als, as := c.searchAll()
|
||||
|
||||
response := c.NewEmpty()
|
||||
response := NewEmpty()
|
||||
searchResult3 := &responses.SearchResult3{}
|
||||
searchResult3.Artist = make([]responses.ArtistID3, len(as))
|
||||
for i, e := range as {
|
||||
@@ -84,8 +94,8 @@ func (c *SearchingController) Search3() {
|
||||
AlbumCount: e.AlbumCount,
|
||||
}
|
||||
}
|
||||
searchResult3.Album = c.ToAlbums(als)
|
||||
searchResult3.Song = c.ToChildren(mfs)
|
||||
searchResult3.Album = ToAlbums(als)
|
||||
searchResult3.Song = ToChildren(mfs)
|
||||
response.SearchResult3 = searchResult3
|
||||
c.SendResponse(response)
|
||||
return response, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user