#pragma once #include #include "../services/AuthService.h" using namespace drogon; class AudioController : public HttpController { public: METHOD_LIST_BEGIN // Public endpoints ADD_METHOD_TO(AudioController::getAllAudio, "/api/audio", Get); ADD_METHOD_TO(AudioController::getLatestAudio, "/api/audio/latest", Get); ADD_METHOD_TO(AudioController::getAudio, "/api/audio/{1}", Get); ADD_METHOD_TO(AudioController::getRealmAudio, "/api/audio/realm/{1}", Get); ADD_METHOD_TO(AudioController::getRealmAudioByName, "/api/audio/realm/name/{1}", Get); ADD_METHOD_TO(AudioController::incrementPlayCount, "/api/audio/{1}/play", Post); // Authenticated endpoints ADD_METHOD_TO(AudioController::getMyAudio, "/api/user/audio", Get); ADD_METHOD_TO(AudioController::uploadAudio, "/api/user/audio", Post); ADD_METHOD_TO(AudioController::updateAudio, "/api/audio/{1}", Put); ADD_METHOD_TO(AudioController::deleteAudio, "/api/audio/{1}", Delete); ADD_METHOD_TO(AudioController::uploadThumbnail, "/api/audio/{1}/thumbnail", Post); ADD_METHOD_TO(AudioController::deleteThumbnail, "/api/audio/{1}/thumbnail", Delete); METHOD_LIST_END // Public audio listing void getAllAudio(const HttpRequestPtr &req, std::function &&callback); void getLatestAudio(const HttpRequestPtr &req, std::function &&callback); void getAudio(const HttpRequestPtr &req, std::function &&callback, const std::string &audioId); void getRealmAudio(const HttpRequestPtr &req, std::function &&callback, const std::string &realmId); void getRealmAudioByName(const HttpRequestPtr &req, std::function &&callback, const std::string &realmName); void incrementPlayCount(const HttpRequestPtr &req, std::function &&callback, const std::string &audioId); // Authenticated audio management void getMyAudio(const HttpRequestPtr &req, std::function &&callback); void uploadAudio(const HttpRequestPtr &req, std::function &&callback); void updateAudio(const HttpRequestPtr &req, std::function &&callback, const std::string &audioId); void deleteAudio(const HttpRequestPtr &req, std::function &&callback, const std::string &audioId); void uploadThumbnail(const HttpRequestPtr &req, std::function &&callback, const std::string &audioId); void deleteThumbnail(const HttpRequestPtr &req, std::function &&callback, const std::string &audioId); };