fix: use correct 'subsonic-response' key format in JSON responses

ASP.NET Core serializes anonymous objects with camelCase, producing
'subsonicResponse' instead of 'subsonic-response'. Fixed by using
Dictionary with explicit key names for all JSON responses.
This commit is contained in:
V1ck3s
2025-12-08 22:48:27 +01:00
committed by Vickes
parent a5e065dd31
commit 93dfcf3c2e
2 changed files with 49 additions and 45 deletions

View File

@@ -426,9 +426,7 @@ public class SubsonicController : ControllerBase
.Concat(externalResult.Artists.Select(a => ConvertArtistToSubsonicJson(a)))
.ToList();
var response = new
{
subsonicResponse = new
return CreateSubsonicJsonResponse(new
{
status = "ok",
version = "1.16.1",
@@ -438,10 +436,7 @@ public class SubsonicController : ControllerBase
album = mergedAlbums,
artist = mergedArtists
}
}
};
return Ok(response);
});
}
else
{
@@ -604,11 +599,23 @@ public class SubsonicController : ControllerBase
);
}
/// <summary>
/// Crée une réponse JSON Subsonic avec la clé "subsonic-response" (avec tiret)
/// </summary>
private IActionResult CreateSubsonicJsonResponse(object responseContent)
{
var response = new Dictionary<string, object>
{
["subsonic-response"] = responseContent
};
return new JsonResult(response);
}
private IActionResult CreateSubsonicResponse(string format, string elementName, object data)
{
if (format == "json")
{
return Ok(new { subsonicResponse = new { status = "ok", version = "1.16.1" } });
return CreateSubsonicJsonResponse(new { status = "ok", version = "1.16.1" });
}
var ns = XNamespace.Get("http://subsonic.org/restapi");
@@ -626,14 +633,11 @@ public class SubsonicController : ControllerBase
{
if (format == "json")
{
return Ok(new
{
subsonicResponse = new
return CreateSubsonicJsonResponse(new
{
status = "failed",
version = "1.16.1",
error = new { code, message }
}
});
}
@@ -655,14 +659,11 @@ public class SubsonicController : ControllerBase
{
if (format == "json")
{
return Ok(new
{
subsonicResponse = new
return CreateSubsonicJsonResponse(new
{
status = "ok",
version = "1.16.1",
song = ConvertSongToSubsonicJson(song)
}
});
}
@@ -681,9 +682,7 @@ public class SubsonicController : ControllerBase
{
if (format == "json")
{
return Ok(new
{
subsonicResponse = new
return CreateSubsonicJsonResponse(new
{
status = "ok",
version = "1.16.1",
@@ -698,7 +697,6 @@ public class SubsonicController : ControllerBase
coverArt = album.Id,
song = album.Songs.Select(s => ConvertSongToSubsonicJson(s)).ToList()
}
}
});
}

6
package-lock.json generated Normal file
View File

@@ -0,0 +1,6 @@
{
"name": "octo-fiesta",
"lockfileVersion": 3,
"requires": true,
"packages": {}
}