Extracted covert art handling

This commit is contained in:
emeric
2023-10-01 20:48:07 +02:00
parent 9d879e66b7
commit b96a16095a
7 changed files with 209 additions and 215 deletions
+4 -29
View File
@@ -39,7 +39,6 @@
#include "services/database/User.hpp"
#include "services/recommendation/IRecommendationService.hpp"
#include "services/scrobbling/IScrobblingService.hpp"
#include "services/cover/ICoverService.hpp"
#include "utils/IConfig.hpp"
#include "utils/Logger.hpp"
#include "utils/Random.hpp"
@@ -47,9 +46,9 @@
#include "utils/String.hpp"
#include "utils/Utils.hpp"
#include "entrypoints/Bookmark.hpp"
#include "entrypoints/Bookmarks.hpp"
#include "entrypoints/MediaRetrieval.hpp"
#include "entrypoints/Scan.hpp"
#include "entrypoints/Stream.hpp"
#include "entrypoints/UserManagement.hpp"
#include "responses/Artist.hpp"
#include "responses/Album.hpp"
@@ -1288,30 +1287,6 @@ handleNotImplemented(RequestContext&)
throw NotImplementedGenericError {};
}
static
void
handleGetCoverArt(RequestContext& context, const Wt::Http::Request& /*request*/, Wt::Http::Response& response)
{
// Mandatory params
const auto trackId {getParameterAs<TrackId>(context.parameters, "id")};
const auto releaseId {getParameterAs<ReleaseId>(context.parameters, "id")};
if (!trackId && !releaseId)
throw BadParameterGenericError {"id"};
std::size_t size {getParameterAs<std::size_t>(context.parameters, "size").value_or(1024)};
size = ::Utils::clamp(size, std::size_t {32}, std::size_t {2048});
std::shared_ptr<Image::IEncodedImage> cover;
if (trackId)
cover = Service<Cover::ICoverService>::get()->getFromTrack(*trackId, size);
else if (releaseId)
cover = Service<Cover::ICoverService>::get()->getFromRelease(*releaseId, size);
response.out().write(reinterpret_cast<const char*>(cover->getData()), cover->getDataSize());
response.setMimeType(std::string {cover->getMimeType()});
}
using RequestHandlerFunc = std::function<Response(RequestContext& context)>;
using CheckImplementedFunc = std::function<void()>;
struct RequestEntryPointInfo
@@ -1430,8 +1405,8 @@ using MediaRetrievalHandlerFunc = std::function<void(RequestContext&, const Wt::
static std::unordered_map<std::string, MediaRetrievalHandlerFunc> mediaRetrievalHandlers
{
// Media retrieval
{"/download", Stream::handleDownload},
{"/stream", Stream::handleStream},
{"/download", handleDownload},
{"/stream", handleStream},
{"/getCoverArt", handleGetCoverArt},
};