refactor sub contructors
This commit is contained in:
@@ -7,12 +7,23 @@ import (
|
||||
"github.com/sentriz/gonic/server/subsonic"
|
||||
)
|
||||
|
||||
func makeChildFromFolder(f *model.Album, parent *model.Album) *subsonic.Track {
|
||||
child := &subsonic.Track{
|
||||
ID: f.ID,
|
||||
func newAlbumByFolder(f *model.Album) *subsonic.Album {
|
||||
return &subsonic.Album{
|
||||
Artist: f.Parent.RightPath,
|
||||
CoverID: f.ID,
|
||||
ID: f.ID,
|
||||
IsDir: true,
|
||||
ParentID: f.ParentID,
|
||||
Title: f.RightPath,
|
||||
}
|
||||
}
|
||||
|
||||
func newTCAlbumByFolder(f *model.Album, parent *model.Album) *subsonic.TrackChild {
|
||||
child := &subsonic.TrackChild{
|
||||
CoverID: f.ID,
|
||||
Title: f.RightPath,
|
||||
ID: f.ID,
|
||||
IsDir: true,
|
||||
Title: f.RightPath,
|
||||
}
|
||||
if parent != nil {
|
||||
child.ParentID = parent.ID
|
||||
@@ -20,8 +31,8 @@ func makeChildFromFolder(f *model.Album, parent *model.Album) *subsonic.Track {
|
||||
return child
|
||||
}
|
||||
|
||||
func makeChildFromTrack(t *model.Track, parent *model.Album) *subsonic.Track {
|
||||
return &subsonic.Track{
|
||||
func newTCTrackByFolder(t *model.Track, parent *model.Album) *subsonic.TrackChild {
|
||||
return &subsonic.TrackChild{
|
||||
ID: t.ID,
|
||||
Album: t.Album.RightPath,
|
||||
ContentType: t.MIME(),
|
||||
@@ -43,25 +54,14 @@ func makeChildFromTrack(t *model.Track, parent *model.Album) *subsonic.Track {
|
||||
}
|
||||
}
|
||||
|
||||
func makeAlbumFromFolder(f *model.Album) *subsonic.Album {
|
||||
return &subsonic.Album{
|
||||
ID: f.ID,
|
||||
Title: f.RightPath,
|
||||
CoverID: f.ID,
|
||||
ParentID: f.ParentID,
|
||||
Artist: f.Parent.RightPath,
|
||||
IsDir: true,
|
||||
}
|
||||
}
|
||||
|
||||
func makeArtistFromFolder(f *model.Album) *subsonic.Artist {
|
||||
func newArtistByFolder(f *model.Album) *subsonic.Artist {
|
||||
return &subsonic.Artist{
|
||||
ID: f.ID,
|
||||
Name: f.RightPath,
|
||||
}
|
||||
}
|
||||
|
||||
func makeDirFromFolder(f *model.Album, children []*subsonic.Track) *subsonic.Directory {
|
||||
func newDirectoryByFolder(f *model.Album, children []*subsonic.TrackChild) *subsonic.Directory {
|
||||
return &subsonic.Directory{
|
||||
ID: f.ID,
|
||||
Parent: f.ParentID,
|
||||
|
||||
@@ -7,12 +7,12 @@ import (
|
||||
"github.com/sentriz/gonic/server/subsonic"
|
||||
)
|
||||
|
||||
func makeAlbumFromAlbum(a *model.Album, artist *model.Artist) *subsonic.Album {
|
||||
func newAlbumByTags(a *model.Album, artist *model.Artist) *subsonic.Album {
|
||||
ret := &subsonic.Album{
|
||||
CoverID: a.ID,
|
||||
Created: a.CreatedAt,
|
||||
ID: a.ID,
|
||||
Name: a.TagTitle,
|
||||
Created: a.CreatedAt,
|
||||
CoverID: a.ID,
|
||||
}
|
||||
if artist != nil {
|
||||
ret.Artist = artist.Name
|
||||
@@ -21,8 +21,8 @@ func makeAlbumFromAlbum(a *model.Album, artist *model.Artist) *subsonic.Album {
|
||||
return ret
|
||||
}
|
||||
|
||||
func makeTrackFromTrack(t *model.Track, album *model.Album) *subsonic.Track {
|
||||
return &subsonic.Track{
|
||||
func newTrackByTags(t *model.Track, album *model.Album) *subsonic.TrackChild {
|
||||
return &subsonic.TrackChild{
|
||||
ID: t.ID,
|
||||
ContentType: t.MIME(),
|
||||
Suffix: t.Ext(),
|
||||
@@ -45,7 +45,7 @@ func makeTrackFromTrack(t *model.Track, album *model.Album) *subsonic.Track {
|
||||
}
|
||||
}
|
||||
|
||||
func makeArtistFromArtist(a *model.Artist) *subsonic.Artist {
|
||||
func newArtistByTags(a *model.Artist) *subsonic.Artist {
|
||||
return &subsonic.Artist{
|
||||
ID: a.ID,
|
||||
Name: a.Name,
|
||||
|
||||
@@ -37,7 +37,7 @@ func (c *Controller) GetIndexes(w http.ResponseWriter, r *http.Request) {
|
||||
indexes = append(indexes, index)
|
||||
}
|
||||
index.Artists = append(index.Artists,
|
||||
makeArtistFromFolder(folder))
|
||||
newArtistByFolder(folder))
|
||||
}
|
||||
sort.Slice(indexes, func(i, j int) bool {
|
||||
return indexes[i].Name < indexes[j].Name
|
||||
@@ -56,7 +56,7 @@ func (c *Controller) GetMusicDirectory(w http.ResponseWriter, r *http.Request) {
|
||||
respondError(w, r, 10, "please provide an `id` parameter")
|
||||
return
|
||||
}
|
||||
childrenObj := []*subsonic.Track{}
|
||||
childrenObj := []*subsonic.TrackChild{}
|
||||
folder := &model.Album{}
|
||||
c.DB.First(folder, id)
|
||||
//
|
||||
@@ -67,7 +67,7 @@ func (c *Controller) GetMusicDirectory(w http.ResponseWriter, r *http.Request) {
|
||||
Find(&childFolders)
|
||||
for _, c := range childFolders {
|
||||
childrenObj = append(childrenObj,
|
||||
makeChildFromFolder(c, folder))
|
||||
newTCAlbumByFolder(c, folder))
|
||||
}
|
||||
//
|
||||
// start looking for child childTracks in the current dir
|
||||
@@ -78,7 +78,7 @@ func (c *Controller) GetMusicDirectory(w http.ResponseWriter, r *http.Request) {
|
||||
Order("filename").
|
||||
Find(&childTracks)
|
||||
for _, c := range childTracks {
|
||||
toAppend := makeChildFromTrack(c, folder)
|
||||
toAppend := newTCTrackByFolder(c, folder)
|
||||
if getStrParam(r, "c") == "Jamstash" {
|
||||
// jamstash thinks it can't play flacs
|
||||
toAppend.ContentType = "audio/mpeg"
|
||||
@@ -89,7 +89,7 @@ func (c *Controller) GetMusicDirectory(w http.ResponseWriter, r *http.Request) {
|
||||
//
|
||||
// respond section
|
||||
sub := subsonic.NewResponse()
|
||||
sub.Directory = makeDirFromFolder(folder, childrenObj)
|
||||
sub.Directory = newDirectoryByFolder(folder, childrenObj)
|
||||
respond(w, r, sub)
|
||||
}
|
||||
|
||||
@@ -144,7 +144,7 @@ func (c *Controller) GetAlbumList(w http.ResponseWriter, r *http.Request) {
|
||||
sub.Albums = &subsonic.Albums{}
|
||||
for _, folder := range folders {
|
||||
sub.Albums.List = append(sub.Albums.List,
|
||||
makeAlbumFromFolder(folder))
|
||||
newAlbumByFolder(folder))
|
||||
}
|
||||
respond(w, r, sub)
|
||||
}
|
||||
@@ -168,7 +168,7 @@ func (c *Controller) SearchTwo(w http.ResponseWriter, r *http.Request) {
|
||||
Find(&artists)
|
||||
for _, a := range artists {
|
||||
results.Artists = append(results.Artists,
|
||||
makeDirFromFolder(a, nil))
|
||||
newDirectoryByFolder(a, nil))
|
||||
}
|
||||
//
|
||||
// search "albums"
|
||||
@@ -181,7 +181,7 @@ func (c *Controller) SearchTwo(w http.ResponseWriter, r *http.Request) {
|
||||
Find(&albums)
|
||||
for _, a := range albums {
|
||||
results.Albums = append(results.Albums,
|
||||
makeChildFromFolder(a, a.Parent))
|
||||
newTCAlbumByFolder(a, a.Parent))
|
||||
}
|
||||
//
|
||||
// search tracks
|
||||
@@ -194,7 +194,7 @@ func (c *Controller) SearchTwo(w http.ResponseWriter, r *http.Request) {
|
||||
Find(&tracks)
|
||||
for _, t := range tracks {
|
||||
results.Tracks = append(results.Tracks,
|
||||
makeChildFromTrack(t, t.Album))
|
||||
newTCTrackByFolder(t, t.Album))
|
||||
}
|
||||
//
|
||||
sub := subsonic.NewResponse()
|
||||
|
||||
@@ -29,7 +29,7 @@ func (c *Controller) GetArtists(w http.ResponseWriter, r *http.Request) {
|
||||
indexes.List = append(indexes.List, index)
|
||||
}
|
||||
index.Artists = append(index.Artists,
|
||||
makeArtistFromArtist(artist))
|
||||
newArtistByTags(artist))
|
||||
}
|
||||
sort.Slice(indexes.List, func(i, j int) bool {
|
||||
return indexes.List[i].Name < indexes.List[j].Name
|
||||
@@ -50,10 +50,10 @@ func (c *Controller) GetArtist(w http.ResponseWriter, r *http.Request) {
|
||||
Preload("Albums").
|
||||
First(artist, id)
|
||||
sub := subsonic.NewResponse()
|
||||
sub.Artist = makeArtistFromArtist(artist)
|
||||
sub.Artist = newArtistByTags(artist)
|
||||
for _, album := range artist.Albums {
|
||||
sub.Artist.Albums = append(sub.Artist.Albums,
|
||||
makeAlbumFromAlbum(album, artist))
|
||||
newAlbumByTags(album, artist))
|
||||
}
|
||||
respond(w, r, sub)
|
||||
}
|
||||
@@ -77,10 +77,10 @@ func (c *Controller) GetAlbum(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
sub := subsonic.NewResponse()
|
||||
sub.Album = makeAlbumFromAlbum(album, album.TagArtist)
|
||||
sub.Album = newAlbumByTags(album, album.TagArtist)
|
||||
for _, track := range album.Tracks {
|
||||
sub.Album.Tracks = append(sub.Album.Tracks,
|
||||
makeTrackFromTrack(track, album))
|
||||
newTrackByTags(track, album))
|
||||
}
|
||||
respond(w, r, sub)
|
||||
}
|
||||
@@ -142,7 +142,7 @@ func (c *Controller) GetAlbumListTwo(w http.ResponseWriter, r *http.Request) {
|
||||
sub.AlbumsTwo = &subsonic.Albums{}
|
||||
for _, album := range albums {
|
||||
sub.AlbumsTwo.List = append(sub.AlbumsTwo.List,
|
||||
makeAlbumFromAlbum(album, album.TagArtist))
|
||||
newAlbumByTags(album, album.TagArtist))
|
||||
}
|
||||
respond(w, r, sub)
|
||||
}
|
||||
@@ -166,7 +166,7 @@ func (c *Controller) SearchThree(w http.ResponseWriter, r *http.Request) {
|
||||
Find(&artists)
|
||||
for _, a := range artists {
|
||||
results.Artists = append(results.Artists,
|
||||
makeArtistFromArtist(a))
|
||||
newArtistByTags(a))
|
||||
}
|
||||
//
|
||||
// search "albums"
|
||||
@@ -179,7 +179,7 @@ func (c *Controller) SearchThree(w http.ResponseWriter, r *http.Request) {
|
||||
Find(&albums)
|
||||
for _, a := range albums {
|
||||
results.Albums = append(results.Albums,
|
||||
makeAlbumFromAlbum(a, a.TagArtist))
|
||||
newAlbumByTags(a, a.TagArtist))
|
||||
}
|
||||
//
|
||||
// search tracks
|
||||
@@ -192,7 +192,7 @@ func (c *Controller) SearchThree(w http.ResponseWriter, r *http.Request) {
|
||||
Find(&tracks)
|
||||
for _, t := range tracks {
|
||||
results.Tracks = append(results.Tracks,
|
||||
makeTrackFromTrack(t, t.Album))
|
||||
newTrackByTags(t, t.Album))
|
||||
}
|
||||
sub := subsonic.NewResponse()
|
||||
sub.SearchResultThree = results
|
||||
|
||||
@@ -17,7 +17,7 @@ type Response struct {
|
||||
Albums *Albums `xml:"albumList" json:"albumList,omitempty"`
|
||||
AlbumsTwo *Albums `xml:"albumList2" json:"albumList2,omitempty"`
|
||||
Album *Album `xml:"album" json:"album,omitempty"`
|
||||
Track *Track `xml:"song" json:"song,omitempty"`
|
||||
Track *TrackChild `xml:"song" json:"song,omitempty"`
|
||||
Indexes *Indexes `xml:"indexes" json:"indexes,omitempty"`
|
||||
Artists *Artists `xml:"artists" json:"artists,omitempty"`
|
||||
Artist *Artist `xml:"artist" json:"artist,omitempty"`
|
||||
@@ -71,18 +71,18 @@ type Album struct {
|
||||
ParentID int `xml:"parent,attr,omitempty" json:"parent,omitempty"`
|
||||
IsDir bool `xml:"isDir,attr,omitempty" json:"isDir,omitempty"`
|
||||
// browsing by tags (getAlbumList2)
|
||||
Name string `xml:"name,attr,omitempty" json:"name,omitempty"`
|
||||
TrackCount int `xml:"songCount,attr,omitempty" json:"songCount,omitempty"`
|
||||
Duration int `xml:"duration,attr,omitempty" json:"duration,omitempty"`
|
||||
Created time.Time `xml:"created,attr,omitempty" json:"created,omitempty"`
|
||||
Tracks []*Track `xml:"song,omitempty" json:"song,omitempty"`
|
||||
Name string `xml:"name,attr,omitempty" json:"name,omitempty"`
|
||||
TrackCount int `xml:"songCount,attr,omitempty" json:"songCount,omitempty"`
|
||||
Duration int `xml:"duration,attr,omitempty" json:"duration,omitempty"`
|
||||
Created time.Time `xml:"created,attr,omitempty" json:"created,omitempty"`
|
||||
Tracks []*TrackChild `xml:"song,omitempty" json:"song,omitempty"`
|
||||
}
|
||||
|
||||
type RandomTracks struct {
|
||||
Tracks []*Track `xml:"song" json:"song"`
|
||||
Tracks []*TrackChild `xml:"song" json:"song"`
|
||||
}
|
||||
|
||||
type Track struct {
|
||||
type TrackChild struct {
|
||||
Album string `xml:"album,attr,omitempty" json:"album,omitempty"`
|
||||
AlbumID int `xml:"albumId,attr,omitempty" json:"albumId,omitempty"`
|
||||
Artist string `xml:"artist,attr,omitempty" json:"artist,omitempty"`
|
||||
@@ -128,11 +128,11 @@ type Index struct {
|
||||
}
|
||||
|
||||
type Directory struct {
|
||||
ID int `xml:"id,attr,omitempty" json:"id"`
|
||||
Parent int `xml:"parent,attr,omitempty" json:"parent"`
|
||||
Name string `xml:"name,attr,omitempty" json:"name"`
|
||||
Starred string `xml:"starred,attr,omitempty" json:"starred,omitempty"`
|
||||
Children []*Track `xml:"child,omitempty" json:"child,omitempty"`
|
||||
ID int `xml:"id,attr,omitempty" json:"id"`
|
||||
Parent int `xml:"parent,attr,omitempty" json:"parent"`
|
||||
Name string `xml:"name,attr,omitempty" json:"name"`
|
||||
Starred string `xml:"starred,attr,omitempty" json:"starred,omitempty"`
|
||||
Children []*TrackChild `xml:"child,omitempty" json:"child,omitempty"`
|
||||
}
|
||||
|
||||
type MusicFolders struct {
|
||||
@@ -154,13 +154,13 @@ type ScanStatus struct {
|
||||
}
|
||||
|
||||
type SearchResultTwo struct {
|
||||
Artists []*Directory `xml:"artist,omitempty" json:"artist,omitempty"`
|
||||
Albums []*Track `xml:"album,omitempty" json:"album,omitempty"`
|
||||
Tracks []*Track `xml:"song,omitempty" json:"song,omitempty"`
|
||||
Artists []*Directory `xml:"artist,omitempty" json:"artist,omitempty"`
|
||||
Albums []*TrackChild `xml:"album,omitempty" json:"album,omitempty"`
|
||||
Tracks []*TrackChild `xml:"song,omitempty" json:"song,omitempty"`
|
||||
}
|
||||
|
||||
type SearchResultThree struct {
|
||||
Artists []*Artist `xml:"artist,omitempty" json:"artist,omitempty"`
|
||||
Albums []*Album `xml:"album,omitempty" json:"album,omitempty"`
|
||||
Tracks []*Track `xml:"song,omitempty" json:"song,omitempty"`
|
||||
Artists []*Artist `xml:"artist,omitempty" json:"artist,omitempty"`
|
||||
Albums []*Album `xml:"album,omitempty" json:"album,omitempty"`
|
||||
Tracks []*TrackChild `xml:"song,omitempty" json:"song,omitempty"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user