Adding paths to the responses

This commit is contained in:
Deluan 2016-03-23 20:53:28 -04:00
parent fc8bb34ae3
commit 21460308c9
2 changed files with 42 additions and 29 deletions

@ -127,36 +127,34 @@ func (c *BaseAPIController) ToChildren(entries engine.Entries) []responses.Child
}
func (c *BaseAPIController) ToChild(entry engine.Entry) responses.Child {
n := responses.Child{}
n.Id = entry.Id
n.Title = entry.Title
n.IsDir = entry.IsDir
n.Parent = entry.Parent
n.Album = entry.Album
n.Year = entry.Year
n.Artist = entry.Artist
n.Genre = entry.Genre
n.CoverArt = entry.CoverArt
n.Track = entry.Track
n.Duration = entry.Duration
n.Size = entry.Size
n.Suffix = entry.Suffix
n.BitRate = entry.BitRate
n.ContentType = entry.ContentType
child := responses.Child{}
child.Id = entry.Id
child.Title = entry.Title
child.IsDir = entry.IsDir
child.Parent = entry.Parent
child.Album = entry.Album
child.Year = entry.Year
child.Artist = entry.Artist
child.Genre = entry.Genre
child.CoverArt = entry.CoverArt
child.Track = entry.Track
child.Duration = entry.Duration
child.Size = entry.Size
child.Suffix = entry.Suffix
child.BitRate = entry.BitRate
child.ContentType = entry.ContentType
if !entry.Starred.IsZero() {
n.Starred = &entry.Starred
child.Starred = &entry.Starred
}
//TODO Disabled for now, as DSub was using it for offline browsing. Will re-enable it when browsing by ID3 is working
//n.Path = entry.Path
n.PlayCount = entry.PlayCount
n.DiscNumber = entry.DiscNumber
child.Path = entry.Path
child.PlayCount = entry.PlayCount
child.DiscNumber = entry.DiscNumber
if !entry.Created.IsZero() {
n.Created = &entry.Created
child.Created = &entry.Created
}
n.AlbumId = entry.AlbumId
n.ArtistId = entry.ArtistId
n.Type = entry.Type
n.UserRating = entry.UserRating
return n
child.AlbumId = entry.AlbumId
child.ArtistId = entry.ArtistId
child.Type = entry.Type
child.UserRating = entry.UserRating
return child
}

@ -1,6 +1,7 @@
package engine
import (
"fmt"
"time"
"github.com/deluan/gosonic/domain"
@ -81,7 +82,10 @@ func FromMediaFile(mf *domain.MediaFile) Entry {
e.CoverArt = mf.Id
}
e.ContentType = mf.ContentType()
e.Path = mf.Path
// Creates a "pseudo" path, to avoid sending absolute paths to the client
if mf.Path != "" {
e.Path = fmt.Sprintf("%s/%s/%s.%s", realArtistName(mf), mf.Album, mf.Title, mf.Suffix)
}
e.PlayCount = int32(mf.PlayCount)
e.DiscNumber = mf.DiscNumber
e.Created = mf.CreatedAt
@ -92,6 +96,17 @@ func FromMediaFile(mf *domain.MediaFile) Entry {
return e
}
func realArtistName(mf *domain.MediaFile) string {
switch {
case mf.Compilation:
return "Various Artists"
case mf.AlbumArtist != "":
return mf.AlbumArtist
}
return mf.Artist
}
func FromAlbums(albums domain.Albums) Entries {
entries := make(Entries, len(albums))
for i, al := range albums {