navidrome/api/media_retrieval.go

49 lines
1.1 KiB
Go

package api
import (
"io"
"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 (c *MediaRetrievalController) GetAvatar() {
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")
}
defer f.Close()
io.Copy(c.Ctx.ResponseWriter, f)
}
func (c *MediaRetrievalController) GetCoverArt() {
id := c.RequiredParamString("id", "id parameter required")
size := c.ParamInt("size", 0)
err := c.cover.Get(id, size, c.Ctx.ResponseWriter)
switch {
case err == domain.ErrNotFound:
beego.Error(err, "Id:", id)
c.SendError(responses.ErrorDataNotFound, "Cover not found")
case err != nil:
beego.Error(err)
c.SendError(responses.ErrorGeneric, "Internal Error")
}
}