navidrome/api/media_retrieval.go

49 lines
1.1 KiB
Go
Raw Normal View History

2016-03-03 18:08:44 +01:00
package api
import (
2016-03-22 01:31:28 +01:00
"io"
"os"
2016-03-03 18:08:44 +01:00
"github.com/astaxie/beego"
2017-04-01 15:47:14 +02:00
"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"
2016-03-03 18:08:44 +01:00
)
2016-03-22 01:31:28 +01:00
type MediaRetrievalController struct {
2016-03-03 18:08:44 +01:00
BaseAPIController
cover engine.Cover
2016-03-03 18:08:44 +01:00
}
2016-03-22 01:31:28 +01:00
func (c *MediaRetrievalController) Prepare() {
2016-03-11 21:16:17 +01:00
utils.ResolveDependencies(&c.cover)
2016-03-03 18:08:44 +01:00
}
2016-03-22 01:31:28 +01:00
func (c *MediaRetrievalController) GetAvatar() {
var f *os.File
f, err := os.Open("static/itunes.png")
if err != nil {
beego.Error(err, "Image not found")
2016-03-23 17:35:10 +01:00
c.SendError(responses.ErrorDataNotFound, "Avatar image not found")
2016-03-22 01:31:28 +01:00
}
defer f.Close()
io.Copy(c.Ctx.ResponseWriter, f)
}
2016-03-24 19:44:21 +01:00
func (c *MediaRetrievalController) GetCoverArt() {
id := c.RequiredParamString("id", "id parameter required")
2016-03-11 06:37:07 +01:00
size := c.ParamInt("size", 0)
2016-03-03 18:08:44 +01:00
err := c.cover.Get(id, size, c.Ctx.ResponseWriter)
2016-03-03 18:08:44 +01:00
switch {
case err == domain.ErrNotFound:
beego.Error(err, "Id:", id)
c.SendError(responses.ErrorDataNotFound, "Cover not found")
case err != nil:
beego.Error(err)
2016-03-23 17:35:10 +01:00
c.SendError(responses.ErrorGeneric, "Internal Error")
2016-03-03 18:08:44 +01:00
}
}