Refactored responses again

This commit is contained in:
Deluan 2016-02-24 12:00:55 -05:00
parent 1a3f370ea6
commit c6dfea51ff
4 changed files with 18 additions and 20 deletions

View file

@ -2,7 +2,6 @@ package controllers
import (
"github.com/astaxie/beego"
"encoding/xml"
"github.com/deluan/gosonic/responses"
)
@ -10,9 +9,8 @@ type GetLicenseController struct{ beego.Controller }
// @router /rest/getLicense.view [get]
func (this *GetLicenseController) Get() {
response := responses.NewGetLicense(true)
xmlBody, _ := xml.Marshal(response)
this.Ctx.Output.Body([]byte(xml.Header + string(xmlBody)))
response := responses.NewXML(&responses.License{Valid: true})
this.Ctx.Output.Body(response)
}

View file

@ -10,7 +10,7 @@ type PingController struct{ beego.Controller }
// @router /rest/ping.view [get]
func (this *PingController) Get() {
response := responses.NewSubsonic()
response := responses.NewEmpty()
xmlBody, _ := xml.Marshal(response)
this.Ctx.Output.Body([]byte(xml.Header + string(xmlBody)))
}

View file

@ -1,17 +1,8 @@
package responses
type valid struct {
import "encoding/xml"
type License struct {
XMLName xml.Name `xml:"license"`
Valid bool `xml:"valid,attr"`
}
type license struct {
Subsonic
Body valid `xml:"license"`
}
func NewGetLicense(valid bool) *license {
response := new(license)
response.Subsonic = NewSubsonic()
response.Body.Valid = valid
return response
}

View file

@ -9,8 +9,17 @@ type Subsonic struct {
XMLName xml.Name `xml:"http://subsonic.org/restapi subsonic-response"`
Status string `xml:"status,attr"`
Version string `xml:"version,attr"`
Body []byte `xml:",innerxml"`
}
func NewSubsonic() Subsonic {
func NewEmpty() Subsonic {
return Subsonic{Status: "ok", Version: beego.AppConfig.String("apiversion")}
}
func NewXML(body interface{}) []byte {
response := NewEmpty()
xmlBody, _ := xml.Marshal(body)
response.Body = xmlBody
xmlResponse, _ := xml.Marshal(response)
return []byte(xml.Header + string(xmlResponse))
}