Moved Rest controllers to 'api' package. Also removed annotation routes

This commit is contained in:
Deluan
2016-02-25 16:31:06 -05:00
parent 543e195744
commit 39757f884a
14 changed files with 20 additions and 143 deletions
+50
View File
@@ -0,0 +1,50 @@
package responses
import (
"encoding/xml"
)
const (
ERROR_GENERIC = iota * 10
ERROR_MISSING_PARAMETER
ERROR_CLIENT_TOO_OLD
ERROR_SERVER_TOO_OLD
ERROR_AUTHENTICATION_FAIL
ERROR_AUTHORIZATION_FAIL
ERROR_TRIAL_EXPIRED
ERROR_DATA_NOT_FOUND
)
var (
errors map[int]string
)
func init() {
errors = make(map[int]string)
errors[ERROR_GENERIC] = "A generic error"
errors[ERROR_MISSING_PARAMETER] = "Required parameter is missing"
errors[ERROR_CLIENT_TOO_OLD] = "Incompatible Subsonic REST protocol version. Client must upgrade"
errors[ERROR_SERVER_TOO_OLD] = "Incompatible Subsonic REST protocol version. Server must upgrade"
errors[ERROR_AUTHENTICATION_FAIL] = "Wrong username or password"
errors[ERROR_AUTHORIZATION_FAIL] = "User is not authorized for the given operation"
errors[ERROR_TRIAL_EXPIRED] = "The trial period for the Subsonic server is over. Please upgrade to Subsonic Premium. Visit subsonic.org for details"
errors[ERROR_DATA_NOT_FOUND] = "The requested data was not found"
}
type error struct {
XMLName xml.Name`xml:"error"`
Code int `xml:"code,attr"`
Message string `xml:"message,attr"`
}
func NewError(errorCode int) []byte {
response := NewEmpty()
response.Status = "fail"
if errors[errorCode] == "" {
errorCode = ERROR_GENERIC
}
xmlBody, _ := xml.Marshal(&error{Code: errorCode, Message: errors[errorCode]})
response.Body = xmlBody
xmlResponse, _ := xml.Marshal(response)
return []byte(xml.Header + string(xmlResponse))
}
+8
View File
@@ -0,0 +1,8 @@
package responses
import "encoding/xml"
type License struct {
XMLName xml.Name `xml:"license"`
Valid bool `xml:"valid,attr"`
}
+14
View File
@@ -0,0 +1,14 @@
package responses
import "encoding/xml"
type MusicFolder struct {
XMLName xml.Name `xml:"musicFolder"`
Id string `xml:"id,attr"`
Name string `xml:"name,attr"`
}
type MusicFolders struct {
XMLName xml.Name `xml:"musicFolders"`
Folders []MusicFolder `xml:"musicFolders"`
}
+25
View File
@@ -0,0 +1,25 @@
package responses
import (
"encoding/xml"
"github.com/astaxie/beego"
)
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 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))
}