Fixed bad json musicBrainzId field in getArtistInfo2, fixes #497

This commit is contained in:
emeric
2024-07-28 14:42:16 +02:00
parent 2a02c6ede6
commit 9a91a2e080
16 changed files with 110 additions and 72 deletions
@@ -30,6 +30,7 @@
#include "services/feedback/IFeedbackService.hpp"
#include "services/scrobbling/IScrobblingService.hpp"
#include "RequestContext.hpp"
#include "SubsonicId.hpp"
#include "responses/Artist.hpp"
#include "responses/DiscTitle.hpp"
@@ -33,5 +33,7 @@ namespace lms::db
namespace lms::api::subsonic
{
class RequestContext;
Response::Node createAlbumNode(RequestContext& context, const db::ObjectPtr<db::Release>& release, bool id3, const db::ObjectPtr<db::Directory>& directory = {});
}
@@ -29,6 +29,7 @@
#include "database/User.hpp"
#include "services/feedback/IFeedbackService.hpp"
#include "RequestContext.hpp"
#include "SubsonicId.hpp"
namespace lms::api::subsonic
@@ -36,6 +36,8 @@ namespace lms::db
namespace lms::api::subsonic
{
class RequestContext;
namespace utils
{
std::string joinArtistNames(const std::vector<db::ObjectPtr<db::Artist>>& artists);
+12 -2
View File
@@ -21,13 +21,23 @@
#include "database/Cluster.hpp"
#include "RequestContext.hpp"
namespace lms::api::subsonic
{
Response::Node createGenreNode(const db::Cluster::pointer& cluster)
Response::Node createGenreNode(RequestContext& context, const db::Cluster::pointer& cluster)
{
Response::Node clusterNode;
clusterNode.setValue(cluster->getName());
switch (context.responseFormat)
{
case ResponseFormat::json:
clusterNode.setAttribute("value", cluster->getName());
break;
case ResponseFormat::xml:
clusterNode.setValue(cluster->getName());
break;
}
clusterNode.setAttribute("songCount", cluster->getTrackCount());
clusterNode.setAttribute("albumCount", cluster->getReleasesCount());
+4 -2
View File
@@ -30,5 +30,7 @@ namespace lms::db
namespace lms::api::subsonic
{
Response::Node createGenreNode(const db::ObjectPtr<db::Cluster>& cluster);
}
class RequestContext;
Response::Node createGenreNode(RequestContext& context, const db::ObjectPtr<db::Cluster>& cluster);
} // namespace lms::api::subsonic
@@ -35,6 +35,7 @@
#include "services/feedback/IFeedbackService.hpp"
#include "services/scrobbling/IScrobblingService.hpp"
#include "RequestContext.hpp"
#include "SubsonicId.hpp"
#include "Utils.hpp"
#include "responses/Artist.hpp"
+3 -1
View File
@@ -32,5 +32,7 @@ namespace lms::db
namespace lms::api::subsonic
{
class RequestContext;
Response::Node createSongNode(RequestContext& context, const db::ObjectPtr<db::Track>& track, bool id3);
}
} // namespace lms::api::subsonic
+12 -9
View File
@@ -19,13 +19,15 @@
#include "responses/User.hpp"
#include "database/MediaLibrary.hpp"
#include "database/User.hpp"
#include "RequestContext.hpp"
#include "SubsonicId.hpp"
namespace lms::api::subsonic
{
using namespace db;
Response::Node createUserNode(const User::pointer& user)
Response::Node createUserNode(RequestContext& context, const db::User::pointer& user)
{
Response::Node userNode;
@@ -38,14 +40,15 @@ namespace lms::api::subsonic
userNode.setAttribute("playlistRole", true);
userNode.setAttribute("coverArtRole", false);
userNode.setAttribute("commentRole", false);
userNode.setAttribute("podcastRole", false);
userNode.setAttribute("podcastRole", false); // not supported
userNode.setAttribute("streamRole", true);
userNode.setAttribute("jukeboxRole", false);
userNode.setAttribute("shareRole", false);
userNode.setAttribute("jukeboxRole", false); // not supported
userNode.setAttribute("shareRole", false); // not supported
Response::Node folder;
folder.setValue("0");
userNode.addArrayChild("folder", std::move(folder));
// users can access all libraries
db::MediaLibrary::find(context.dbSession, [&](const db::MediaLibrary::pointer& library) {
userNode.addArrayValue("folder", idToString(library->getId()));
});
return userNode;
}
+3 -1
View File
@@ -30,5 +30,7 @@ namespace lms::db
namespace lms::api::subsonic
{
Response::Node createUserNode(const db::ObjectPtr<db::User>& user);
class RequestContext;
Response::Node createUserNode(RequestContext& context, const db::ObjectPtr<db::User>& user);
}