Add GetGenre endpoint

This commit is contained in:
Deluan
2020-01-15 17:49:09 -05:00
parent ca2c897340
commit 36d93774bc
22 changed files with 303 additions and 26 deletions
@@ -0,0 +1 @@
{"status":"ok","version":"1.8.0","genres":{"genre":[{"value":"Rock","songCount":1000,"albumCount":100},{"value":"Reggae","songCount":500,"albumCount":50},{"value":"Pop","songCount":0,"albumCount":0}]}}
@@ -0,0 +1 @@
<subsonic-response xmlns="http://subsonic.org/restapi" status="ok" version="1.8.0"><genres><genre songCount="1000" albumCount="100">Rock</genre><genre songCount="500" albumCount="50">Reggae</genre><genre songCount="0" albumCount="0">Pop</genre></genres></subsonic-response>
@@ -0,0 +1 @@
{"status":"ok","version":"1.8.0","genres":{}}
@@ -0,0 +1 @@
<subsonic-response xmlns="http://subsonic.org/restapi" status="ok" version="1.8.0"><genres></genres></subsonic-response>
+11
View File
@@ -26,6 +26,7 @@ type Subsonic struct {
NowPlaying *NowPlaying `xml:"nowPlaying,omitempty" json:"nowPlaying,omitempty"`
Song *Child `xml:"song,omitempty" json:"song,omitempty"`
RandomSongs *Songs `xml:"randomSongs,omitempty" json:"randomSongs,omitempty"`
Genres *Genres `xml:"genres,omitempty" json:"genres,omitempty"`
// ID3
Artist *Indexes `xml:"artists,omitempty" json:"artists,omitempty"`
@@ -259,3 +260,13 @@ type User struct {
VideoConversionRole bool `xml:"videoConversionRole,attr" json:"videoConversionRole"`
Folder []int `xml:"folder,omitempty" json:"folder,omitempty"`
}
type Genre struct {
Name string `xml:",chardata" json:"value,omitempty"`
SongCount int `xml:"songCount,attr" json:"songCount"`
AlbumCount int `xml:"albumCount,attr" json:"albumCount"`
}
type Genres struct {
Genre []Genre `xml:"genre,omitempty" json:"genre,omitempty"`
}
+32
View File
@@ -248,4 +248,36 @@ var _ = Describe("Responses", func() {
})
})
})
Describe("Genres", func() {
BeforeEach(func() {
response.Genres = &Genres{}
})
Context("without data", func() {
It("should match XML", func() {
Expect(xml.Marshal(response)).To(MatchSnapshot())
})
It("should match JSON", func() {
Expect(json.Marshal(response)).To(MatchSnapshot())
})
})
Context("with data", func() {
BeforeEach(func() {
genres := make([]Genre, 3)
genres[0] = Genre{SongCount: 1000, AlbumCount: 100, Name: "Rock"}
genres[1] = Genre{SongCount: 500, AlbumCount: 50, Name: "Reggae"}
genres[2] = Genre{SongCount: 0, AlbumCount: 0, Name: "Pop"}
response.Genres.Genre = genres
})
It("should match XML", func() {
Expect(xml.Marshal(response)).To(MatchSnapshot())
})
It("should match JSON", func() {
Expect(json.Marshal(response)).To(MatchSnapshot())
})
})
})
})