refactor sub contructors

This commit is contained in:
sentriz
2019-06-05 18:13:01 +01:00
parent 0a1bc49551
commit a1a40b85e4
5 changed files with 62 additions and 62 deletions

View File

@@ -7,12 +7,23 @@ import (
"github.com/sentriz/gonic/server/subsonic" "github.com/sentriz/gonic/server/subsonic"
) )
func makeChildFromFolder(f *model.Album, parent *model.Album) *subsonic.Track { func newAlbumByFolder(f *model.Album) *subsonic.Album {
child := &subsonic.Track{ return &subsonic.Album{
ID: f.ID, 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, CoverID: f.ID,
Title: f.RightPath, ID: f.ID,
IsDir: true, IsDir: true,
Title: f.RightPath,
} }
if parent != nil { if parent != nil {
child.ParentID = parent.ID child.ParentID = parent.ID
@@ -20,8 +31,8 @@ func makeChildFromFolder(f *model.Album, parent *model.Album) *subsonic.Track {
return child return child
} }
func makeChildFromTrack(t *model.Track, parent *model.Album) *subsonic.Track { func newTCTrackByFolder(t *model.Track, parent *model.Album) *subsonic.TrackChild {
return &subsonic.Track{ return &subsonic.TrackChild{
ID: t.ID, ID: t.ID,
Album: t.Album.RightPath, Album: t.Album.RightPath,
ContentType: t.MIME(), ContentType: t.MIME(),
@@ -43,25 +54,14 @@ func makeChildFromTrack(t *model.Track, parent *model.Album) *subsonic.Track {
} }
} }
func makeAlbumFromFolder(f *model.Album) *subsonic.Album { func newArtistByFolder(f *model.Album) *subsonic.Artist {
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 {
return &subsonic.Artist{ return &subsonic.Artist{
ID: f.ID, ID: f.ID,
Name: f.RightPath, 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{ return &subsonic.Directory{
ID: f.ID, ID: f.ID,
Parent: f.ParentID, Parent: f.ParentID,

View File

@@ -7,12 +7,12 @@ import (
"github.com/sentriz/gonic/server/subsonic" "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{ ret := &subsonic.Album{
CoverID: a.ID,
Created: a.CreatedAt,
ID: a.ID, ID: a.ID,
Name: a.TagTitle, Name: a.TagTitle,
Created: a.CreatedAt,
CoverID: a.ID,
} }
if artist != nil { if artist != nil {
ret.Artist = artist.Name ret.Artist = artist.Name
@@ -21,8 +21,8 @@ func makeAlbumFromAlbum(a *model.Album, artist *model.Artist) *subsonic.Album {
return ret return ret
} }
func makeTrackFromTrack(t *model.Track, album *model.Album) *subsonic.Track { func newTrackByTags(t *model.Track, album *model.Album) *subsonic.TrackChild {
return &subsonic.Track{ return &subsonic.TrackChild{
ID: t.ID, ID: t.ID,
ContentType: t.MIME(), ContentType: t.MIME(),
Suffix: t.Ext(), 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{ return &subsonic.Artist{
ID: a.ID, ID: a.ID,
Name: a.Name, Name: a.Name,

View File

@@ -37,7 +37,7 @@ func (c *Controller) GetIndexes(w http.ResponseWriter, r *http.Request) {
indexes = append(indexes, index) indexes = append(indexes, index)
} }
index.Artists = append(index.Artists, index.Artists = append(index.Artists,
makeArtistFromFolder(folder)) newArtistByFolder(folder))
} }
sort.Slice(indexes, func(i, j int) bool { sort.Slice(indexes, func(i, j int) bool {
return indexes[i].Name < indexes[j].Name 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") respondError(w, r, 10, "please provide an `id` parameter")
return return
} }
childrenObj := []*subsonic.Track{} childrenObj := []*subsonic.TrackChild{}
folder := &model.Album{} folder := &model.Album{}
c.DB.First(folder, id) c.DB.First(folder, id)
// //
@@ -67,7 +67,7 @@ func (c *Controller) GetMusicDirectory(w http.ResponseWriter, r *http.Request) {
Find(&childFolders) Find(&childFolders)
for _, c := range childFolders { for _, c := range childFolders {
childrenObj = append(childrenObj, childrenObj = append(childrenObj,
makeChildFromFolder(c, folder)) newTCAlbumByFolder(c, folder))
} }
// //
// start looking for child childTracks in the current dir // 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"). Order("filename").
Find(&childTracks) Find(&childTracks)
for _, c := range childTracks { for _, c := range childTracks {
toAppend := makeChildFromTrack(c, folder) toAppend := newTCTrackByFolder(c, folder)
if getStrParam(r, "c") == "Jamstash" { if getStrParam(r, "c") == "Jamstash" {
// jamstash thinks it can't play flacs // jamstash thinks it can't play flacs
toAppend.ContentType = "audio/mpeg" toAppend.ContentType = "audio/mpeg"
@@ -89,7 +89,7 @@ func (c *Controller) GetMusicDirectory(w http.ResponseWriter, r *http.Request) {
// //
// respond section // respond section
sub := subsonic.NewResponse() sub := subsonic.NewResponse()
sub.Directory = makeDirFromFolder(folder, childrenObj) sub.Directory = newDirectoryByFolder(folder, childrenObj)
respond(w, r, sub) respond(w, r, sub)
} }
@@ -144,7 +144,7 @@ func (c *Controller) GetAlbumList(w http.ResponseWriter, r *http.Request) {
sub.Albums = &subsonic.Albums{} sub.Albums = &subsonic.Albums{}
for _, folder := range folders { for _, folder := range folders {
sub.Albums.List = append(sub.Albums.List, sub.Albums.List = append(sub.Albums.List,
makeAlbumFromFolder(folder)) newAlbumByFolder(folder))
} }
respond(w, r, sub) respond(w, r, sub)
} }
@@ -168,7 +168,7 @@ func (c *Controller) SearchTwo(w http.ResponseWriter, r *http.Request) {
Find(&artists) Find(&artists)
for _, a := range artists { for _, a := range artists {
results.Artists = append(results.Artists, results.Artists = append(results.Artists,
makeDirFromFolder(a, nil)) newDirectoryByFolder(a, nil))
} }
// //
// search "albums" // search "albums"
@@ -181,7 +181,7 @@ func (c *Controller) SearchTwo(w http.ResponseWriter, r *http.Request) {
Find(&albums) Find(&albums)
for _, a := range albums { for _, a := range albums {
results.Albums = append(results.Albums, results.Albums = append(results.Albums,
makeChildFromFolder(a, a.Parent)) newTCAlbumByFolder(a, a.Parent))
} }
// //
// search tracks // search tracks
@@ -194,7 +194,7 @@ func (c *Controller) SearchTwo(w http.ResponseWriter, r *http.Request) {
Find(&tracks) Find(&tracks)
for _, t := range tracks { for _, t := range tracks {
results.Tracks = append(results.Tracks, results.Tracks = append(results.Tracks,
makeChildFromTrack(t, t.Album)) newTCTrackByFolder(t, t.Album))
} }
// //
sub := subsonic.NewResponse() sub := subsonic.NewResponse()

View File

@@ -29,7 +29,7 @@ func (c *Controller) GetArtists(w http.ResponseWriter, r *http.Request) {
indexes.List = append(indexes.List, index) indexes.List = append(indexes.List, index)
} }
index.Artists = append(index.Artists, index.Artists = append(index.Artists,
makeArtistFromArtist(artist)) newArtistByTags(artist))
} }
sort.Slice(indexes.List, func(i, j int) bool { sort.Slice(indexes.List, func(i, j int) bool {
return indexes.List[i].Name < indexes.List[j].Name 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"). Preload("Albums").
First(artist, id) First(artist, id)
sub := subsonic.NewResponse() sub := subsonic.NewResponse()
sub.Artist = makeArtistFromArtist(artist) sub.Artist = newArtistByTags(artist)
for _, album := range artist.Albums { for _, album := range artist.Albums {
sub.Artist.Albums = append(sub.Artist.Albums, sub.Artist.Albums = append(sub.Artist.Albums,
makeAlbumFromAlbum(album, artist)) newAlbumByTags(album, artist))
} }
respond(w, r, sub) respond(w, r, sub)
} }
@@ -77,10 +77,10 @@ func (c *Controller) GetAlbum(w http.ResponseWriter, r *http.Request) {
return return
} }
sub := subsonic.NewResponse() sub := subsonic.NewResponse()
sub.Album = makeAlbumFromAlbum(album, album.TagArtist) sub.Album = newAlbumByTags(album, album.TagArtist)
for _, track := range album.Tracks { for _, track := range album.Tracks {
sub.Album.Tracks = append(sub.Album.Tracks, sub.Album.Tracks = append(sub.Album.Tracks,
makeTrackFromTrack(track, album)) newTrackByTags(track, album))
} }
respond(w, r, sub) respond(w, r, sub)
} }
@@ -142,7 +142,7 @@ func (c *Controller) GetAlbumListTwo(w http.ResponseWriter, r *http.Request) {
sub.AlbumsTwo = &subsonic.Albums{} sub.AlbumsTwo = &subsonic.Albums{}
for _, album := range albums { for _, album := range albums {
sub.AlbumsTwo.List = append(sub.AlbumsTwo.List, sub.AlbumsTwo.List = append(sub.AlbumsTwo.List,
makeAlbumFromAlbum(album, album.TagArtist)) newAlbumByTags(album, album.TagArtist))
} }
respond(w, r, sub) respond(w, r, sub)
} }
@@ -166,7 +166,7 @@ func (c *Controller) SearchThree(w http.ResponseWriter, r *http.Request) {
Find(&artists) Find(&artists)
for _, a := range artists { for _, a := range artists {
results.Artists = append(results.Artists, results.Artists = append(results.Artists,
makeArtistFromArtist(a)) newArtistByTags(a))
} }
// //
// search "albums" // search "albums"
@@ -179,7 +179,7 @@ func (c *Controller) SearchThree(w http.ResponseWriter, r *http.Request) {
Find(&albums) Find(&albums)
for _, a := range albums { for _, a := range albums {
results.Albums = append(results.Albums, results.Albums = append(results.Albums,
makeAlbumFromAlbum(a, a.TagArtist)) newAlbumByTags(a, a.TagArtist))
} }
// //
// search tracks // search tracks
@@ -192,7 +192,7 @@ func (c *Controller) SearchThree(w http.ResponseWriter, r *http.Request) {
Find(&tracks) Find(&tracks)
for _, t := range tracks { for _, t := range tracks {
results.Tracks = append(results.Tracks, results.Tracks = append(results.Tracks,
makeTrackFromTrack(t, t.Album)) newTrackByTags(t, t.Album))
} }
sub := subsonic.NewResponse() sub := subsonic.NewResponse()
sub.SearchResultThree = results sub.SearchResultThree = results

View File

@@ -17,7 +17,7 @@ type Response struct {
Albums *Albums `xml:"albumList" json:"albumList,omitempty"` Albums *Albums `xml:"albumList" json:"albumList,omitempty"`
AlbumsTwo *Albums `xml:"albumList2" json:"albumList2,omitempty"` AlbumsTwo *Albums `xml:"albumList2" json:"albumList2,omitempty"`
Album *Album `xml:"album" json:"album,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"` Indexes *Indexes `xml:"indexes" json:"indexes,omitempty"`
Artists *Artists `xml:"artists" json:"artists,omitempty"` Artists *Artists `xml:"artists" json:"artists,omitempty"`
Artist *Artist `xml:"artist" json:"artist,omitempty"` Artist *Artist `xml:"artist" json:"artist,omitempty"`
@@ -71,18 +71,18 @@ type Album struct {
ParentID int `xml:"parent,attr,omitempty" json:"parent,omitempty"` ParentID int `xml:"parent,attr,omitempty" json:"parent,omitempty"`
IsDir bool `xml:"isDir,attr,omitempty" json:"isDir,omitempty"` IsDir bool `xml:"isDir,attr,omitempty" json:"isDir,omitempty"`
// browsing by tags (getAlbumList2) // browsing by tags (getAlbumList2)
Name string `xml:"name,attr,omitempty" json:"name,omitempty"` Name string `xml:"name,attr,omitempty" json:"name,omitempty"`
TrackCount int `xml:"songCount,attr,omitempty" json:"songCount,omitempty"` TrackCount int `xml:"songCount,attr,omitempty" json:"songCount,omitempty"`
Duration int `xml:"duration,attr,omitempty" json:"duration,omitempty"` Duration int `xml:"duration,attr,omitempty" json:"duration,omitempty"`
Created time.Time `xml:"created,attr,omitempty" json:"created,omitempty"` Created time.Time `xml:"created,attr,omitempty" json:"created,omitempty"`
Tracks []*Track `xml:"song,omitempty" json:"song,omitempty"` Tracks []*TrackChild `xml:"song,omitempty" json:"song,omitempty"`
} }
type RandomTracks struct { 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"` Album string `xml:"album,attr,omitempty" json:"album,omitempty"`
AlbumID int `xml:"albumId,attr,omitempty" json:"albumId,omitempty"` AlbumID int `xml:"albumId,attr,omitempty" json:"albumId,omitempty"`
Artist string `xml:"artist,attr,omitempty" json:"artist,omitempty"` Artist string `xml:"artist,attr,omitempty" json:"artist,omitempty"`
@@ -128,11 +128,11 @@ type Index struct {
} }
type Directory struct { type Directory struct {
ID int `xml:"id,attr,omitempty" json:"id"` ID int `xml:"id,attr,omitempty" json:"id"`
Parent int `xml:"parent,attr,omitempty" json:"parent"` Parent int `xml:"parent,attr,omitempty" json:"parent"`
Name string `xml:"name,attr,omitempty" json:"name"` Name string `xml:"name,attr,omitempty" json:"name"`
Starred string `xml:"starred,attr,omitempty" json:"starred,omitempty"` Starred string `xml:"starred,attr,omitempty" json:"starred,omitempty"`
Children []*Track `xml:"child,omitempty" json:"child,omitempty"` Children []*TrackChild `xml:"child,omitempty" json:"child,omitempty"`
} }
type MusicFolders struct { type MusicFolders struct {
@@ -154,13 +154,13 @@ type ScanStatus struct {
} }
type SearchResultTwo struct { type SearchResultTwo struct {
Artists []*Directory `xml:"artist,omitempty" json:"artist,omitempty"` Artists []*Directory `xml:"artist,omitempty" json:"artist,omitempty"`
Albums []*Track `xml:"album,omitempty" json:"album,omitempty"` Albums []*TrackChild `xml:"album,omitempty" json:"album,omitempty"`
Tracks []*Track `xml:"song,omitempty" json:"song,omitempty"` Tracks []*TrackChild `xml:"song,omitempty" json:"song,omitempty"`
} }
type SearchResultThree struct { type SearchResultThree struct {
Artists []*Artist `xml:"artist,omitempty" json:"artist,omitempty"` Artists []*Artist `xml:"artist,omitempty" json:"artist,omitempty"`
Albums []*Album `xml:"album,omitempty" json:"album,omitempty"` Albums []*Album `xml:"album,omitempty" json:"album,omitempty"`
Tracks []*Track `xml:"song,omitempty" json:"song,omitempty"` Tracks []*TrackChild `xml:"song,omitempty" json:"song,omitempty"`
} }