Removed Beego routing/controllers, converted to Chi.

Also introduced Wire for dependency injection
This commit is contained in:
Deluan
2020-01-07 14:56:26 -05:00
committed by Deluan Quintão
parent 1f4dfcb853
commit 79701caca3
31 changed files with 1603 additions and 1188 deletions
+19 -13
View File
@@ -2,47 +2,53 @@ package api
import (
"io"
"net/http"
"os"
"github.com/astaxie/beego"
"github.com/cloudsonic/sonic-server/api/responses"
"github.com/cloudsonic/sonic-server/domain"
"github.com/cloudsonic/sonic-server/engine"
"github.com/cloudsonic/sonic-server/utils"
)
type MediaRetrievalController struct {
BaseAPIController
cover engine.Cover
}
func (c *MediaRetrievalController) Prepare() {
utils.ResolveDependencies(&c.cover)
func NewMediaRetrievalController(cover engine.Cover) *MediaRetrievalController {
return &MediaRetrievalController{cover: cover}
}
func (c *MediaRetrievalController) GetAvatar() {
func (c *MediaRetrievalController) GetAvatar(w http.ResponseWriter, r *http.Request) (*responses.Subsonic, error) {
var f *os.File
f, err := os.Open("static/itunes.png")
if err != nil {
beego.Error(err, "Image not found")
c.SendError(responses.ErrorDataNotFound, "Avatar image not found")
return nil, NewError(responses.ErrorDataNotFound, "Avatar image not found")
}
defer f.Close()
io.Copy(c.Ctx.ResponseWriter, f)
io.Copy(w, f)
return nil, nil
}
func (c *MediaRetrievalController) GetCoverArt() {
id := c.RequiredParamString("id", "id parameter required")
size := c.ParamInt("size", 0)
func (c *MediaRetrievalController) GetCoverArt(w http.ResponseWriter, r *http.Request) (*responses.Subsonic, error) {
id, err := RequiredParamString(r, "id", "id parameter required")
if err != nil {
return nil, err
}
size := ParamInt(r, "size", 0)
err := c.cover.Get(id, size, c.Ctx.ResponseWriter)
err = c.cover.Get(id, size, w)
switch {
case err == domain.ErrNotFound:
beego.Error(err, "Id:", id)
c.SendError(responses.ErrorDataNotFound, "Cover not found")
return nil, NewError(responses.ErrorDataNotFound, "Cover not found")
case err != nil:
beego.Error(err)
c.SendError(responses.ErrorGeneric, "Internal Error")
return nil, NewError(responses.ErrorGeneric, "Internal Error")
}
return nil, nil
}