diff --git a/api/base_api_controller.go b/api/base_api_controller.go index 9dd5f6fef..716d0fc44 100644 --- a/api/base_api_controller.go +++ b/api/base_api_controller.go @@ -13,6 +13,15 @@ func (c *BaseAPIController) NewEmpty() responses.Subsonic { return responses.Subsonic{Status: "ok", Version: beego.AppConfig.String("apiVersion")} } +func (c *BaseAPIController) ValidateParameters(param string, msg string) string { + p := c.Input().Get(param) + if p == "" { + c.SendError(responses.ERROR_MISSING_PARAMETER, msg) + } + c.Data[param] = p + return p +} + func (c *BaseAPIController) SendError(errorCode int, message ...interface{}) { response := responses.Subsonic{Version: beego.AppConfig.String("apiVersion"), Status: "fail"} var msg string diff --git a/api/get_cover_art.go b/api/get_cover_art.go index 9667aca7b..f9e9a876f 100644 --- a/api/get_cover_art.go +++ b/api/get_cover_art.go @@ -21,10 +21,7 @@ func (c *GetCoverArtController) Prepare() { } func (c *GetCoverArtController) Get() { - id := c.Input().Get("id") - if id == "" { - c.SendError(responses.ERROR_MISSING_PARAMETER, "id parameter required") - } + id := c.ValidateParameters("id", "id parameter required") mf, err := c.repo.Get(id) if err != nil { diff --git a/api/get_cover_art_test.go b/api/get_cover_art_test.go index 6c268addd..8abf473fd 100644 --- a/api/get_cover_art_test.go +++ b/api/get_cover_art_test.go @@ -20,7 +20,7 @@ func getCoverArt(params ...string) (*http.Request, *httptest.ResponseRecorder) { r, _ := http.NewRequest("GET", url, nil) w := httptest.NewRecorder() beego.BeeApp.Handlers.ServeHTTP(w, r) - beego.Debug("testing TestGetCoverArtDirectory", fmt.Sprintf("\nUrl: %s\nStatus Code: [%d]\n%#v", r.URL, w.Code, w.HeaderMap)) + beego.Debug("testing TestGetCoverArt", fmt.Sprintf("\nUrl: %s\nStatus Code: [%d]\n%#v", r.URL, w.Code, w.HeaderMap)) return r, w } diff --git a/api/get_music_directory.go b/api/get_music_directory.go index 3062dbc9a..fc16d6fa0 100644 --- a/api/get_music_directory.go +++ b/api/get_music_directory.go @@ -6,7 +6,6 @@ import ( "github.com/deluan/gosonic/domain" "github.com/deluan/gosonic/utils" "github.com/karlkfi/inject" - "mime" ) type GetMusicDirectoryController struct { @@ -23,11 +22,7 @@ func (c *GetMusicDirectoryController) Prepare() { } func (c *GetMusicDirectoryController) Get() { - id := c.Input().Get("id") - - if id == "" { - c.SendError(responses.ERROR_MISSING_PARAMETER, "id parameter required") - } + id := c.ValidateParameters("id", "id parameter required") response := c.NewEmpty() @@ -83,7 +78,7 @@ func (c *GetMusicDirectoryController) buildAlbumDir(al *domain.Album, tracks []d if mf.HasCoverArt { dir.Child[i].CoverArt = mf.Id } - dir.Child[i].ContentType = mime.TypeByExtension("." + mf.Suffix) + dir.Child[i].ContentType = mf.ContentType() } return dir } diff --git a/domain/mediafile.go b/domain/mediafile.go index 4aed54416..f5b853bff 100644 --- a/domain/mediafile.go +++ b/domain/mediafile.go @@ -2,6 +2,7 @@ package domain import ( "time" + "mime" ) type MediaFile struct { @@ -27,6 +28,10 @@ type MediaFile struct { UpdatedAt time.Time } +func (mf *MediaFile) ContentType() string { + return mime.TypeByExtension("." + mf.Suffix) +} + type MediaFileRepository interface { BaseRepository Put(m *MediaFile) error