feat(sunsonic): expose type serverVersion in subsonic responses

https://opensubsonic.netlify.app/docs/responses/subsonic-response/
https://github.com/opensubsonic/open-subsonic-api/discussions/3
This commit is contained in:
sentriz
2023-04-08 01:20:34 +01:00
parent 3974b0d844
commit b8fceae383
32 changed files with 124 additions and 90 deletions

View File

@@ -64,11 +64,11 @@ func main() {
}
if *confShowVersion {
fmt.Println(gonic.Version)
fmt.Printf("v%s\n", gonic.Version)
os.Exit(0)
}
log.Printf("starting gonic %s\n", gonic.Version)
log.Printf("starting gonic v%s\n", gonic.Version)
log.Printf("provided config\n")
set.VisitAll(func(f *flag.Flag) {
value := strings.ReplaceAll(f.Value.String(), "\n", "")

View File

@@ -62,7 +62,7 @@
{{ end }}
{{ slot }}
<div class="px-5 text-right whitespace-nowrap">
<span class="text-gray-500">{{ .Version }}</span>
<span class="text-gray-500">v{{ .Version }}</span>
senan kelly, 2020
<span class="text-gray-500">&#124;</span>
{{ component "ext_link" (props . "To" "https://github.com/sentriz/gonic") }}github{{ end }}

View File

@@ -16,6 +16,7 @@ import (
jd "github.com/josephburnett/jd/lib"
"go.senan.xyz/gonic"
"go.senan.xyz/gonic/db"
"go.senan.xyz/gonic/mockfs"
"go.senan.xyz/gonic/paths"
@@ -174,6 +175,7 @@ func makec(t *testing.T, roots []string, audio bool) *Controller {
}
func TestMain(m *testing.M) {
gonic.Version = ""
log.SetOutput(io.Discard)
os.Exit(m.Run())
}

View File

@@ -24,7 +24,11 @@ type Response struct {
Status string `xml:"status,attr" json:"status"`
Version string `xml:"version,attr" json:"version"`
XMLNS string `xml:"xmlns,attr" json:"-"`
// https://opensubsonic.netlify.app/docs/responses/subsonic-response/
Type string `xml:"type,attr" json:"type"`
ServerVersion string `xml:"serverVersion,attr" json:"serverVersion"`
Error *Error `xml:"error" json:"error,omitempty"`
Albums *Albums `xml:"albumList" json:"albumList,omitempty"`
AlbumsTwo *Albums `xml:"albumList2" json:"albumList2,omitempty"`
@@ -68,6 +72,7 @@ func NewResponse() *Response {
XMLNS: xmlns,
Version: apiVersion,
Type: gonic.Name,
ServerVersion: gonic.Version,
}
}
@@ -98,6 +103,7 @@ func NewError(code int, message string, a ...interface{}) *Response {
Message: fmt.Sprintf(message, a...),
},
Type: gonic.Name,
ServerVersion: gonic.Version,
}
}

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"albumList": {
"album": [
{

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"albumList": {
"album": [
{

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"albumList": {
"album": [
{

View File

@@ -3,8 +3,22 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"albumList": {
"album": [
{
"id": "al-13",
"coverArt": "al-13",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "album-2",
"album": "",
"parent": "al-10",
"isDir": true,
"name": "",
"songCount": 3,
"duration": 300
},
{
"id": "al-12",
"coverArt": "al-12",
@@ -32,26 +46,13 @@
"duration": 300
},
{
"id": "al-4",
"coverArt": "al-4",
"id": "al-5",
"coverArt": "al-5",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "album-1",
"album": "",
"parent": "al-2",
"isDir": true,
"name": "",
"songCount": 3,
"duration": 300
},
{
"id": "al-13",
"coverArt": "al-13",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "album-2",
"album": "",
"parent": "al-10",
"parent": "al-2",
"isDir": true,
"name": "",
"songCount": 3,
@@ -110,11 +111,11 @@
"duration": 300
},
{
"id": "al-5",
"coverArt": "al-5",
"id": "al-4",
"coverArt": "al-4",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "album-2",
"title": "album-1",
"album": "",
"parent": "al-2",
"isDir": true,

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"albumList2": {
"album": [
{

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"albumList2": {
"album": [
{

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"albumList2": {
"album": [
{

View File

@@ -3,60 +3,9 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"albumList2": {
"album": [
{
"id": "al-3",
"coverArt": "al-3",
"artistId": "ar-1",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-5",
"coverArt": "al-5",
"artistId": "ar-1",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-11",
"coverArt": "al-11",
"artistId": "ar-3",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-9",
"coverArt": "al-9",
"artistId": "ar-2",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-13",
"coverArt": "al-13",
@@ -84,14 +33,27 @@
"year": 2021
},
{
"id": "al-8",
"coverArt": "al-8",
"artistId": "ar-2",
"artist": "artist-1",
"id": "al-11",
"coverArt": "al-11",
"artistId": "ar-3",
"artist": "artist-2",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-1",
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-3",
"coverArt": "al-3",
"artistId": "ar-1",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-0",
"songCount": 3,
"duration": 300,
"year": 2021
@@ -109,6 +71,45 @@
"duration": 300,
"year": 2021
},
{
"id": "al-5",
"coverArt": "al-5",
"artistId": "ar-1",
"artist": "artist-0",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-9",
"coverArt": "al-9",
"artistId": "ar-2",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-2",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-8",
"coverArt": "al-8",
"artistId": "ar-2",
"artist": "artist-1",
"created": "2019-11-30T00:00:00Z",
"title": "",
"album": "",
"name": "album-1",
"songCount": 3,
"duration": 300,
"year": 2021
},
{
"id": "al-12",
"coverArt": "al-12",

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"album": {
"id": "al-3",
"coverArt": "al-3",

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"album": {
"id": "al-2",
"created": "2019-11-30T00:00:00Z",

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"artist": {
"id": "ar-1",
"name": "artist-0",

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"artist": {
"id": "ar-3",
"name": "artist-2",

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"artist": {
"id": "ar-2",
"name": "artist-1",

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"artists": {
"ignoredArticles": "",
"index": [

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"artists": {
"ignoredArticles": "",
"index": [

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"artists": {
"ignoredArticles": "",
"index": [

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"indexes": {
"lastModified": 0,
"ignoredArticles": "",

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"indexes": {
"lastModified": 0,
"ignoredArticles": "",

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"indexes": {
"lastModified": 0,
"ignoredArticles": "",

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"directory": {
"id": "al-3",
"parent": "al-2",

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"directory": {
"id": "al-2",
"parent": "al-1",

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"searchResult3": {
"album": [
{

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"searchResult3": {
"artist": [
{ "id": "ar-1", "name": "artist-0", "albumCount": 3 },

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"searchResult3": {
"song": [
{

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"searchResult2": {
"album": [
{

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"searchResult2": {
"artist": [
{ "id": "al-2", "parent": "al-1", "name": "artist-0" },

View File

@@ -3,6 +3,7 @@
"status": "ok",
"version": "1.15.0",
"type": "gonic",
"serverVersion": "",
"searchResult2": {
"song": [
{

View File

@@ -3,13 +3,12 @@ package gonic
import (
_ "embed"
"fmt"
"strings"
)
//go:embed version.txt
var version string
var Version = fmt.Sprintf("v%s", strings.TrimSpace(version))
var Version = strings.TrimSpace(version)
const Name = "gonic"
const NameUpper = "GONIC"