82 lines
3.7 KiB
C++
82 lines
3.7 KiB
C++
#pragma once
|
|
#include <drogon/HttpController.h>
|
|
#include "../services/AuthService.h"
|
|
|
|
using namespace drogon;
|
|
|
|
class AudioController : public HttpController<AudioController> {
|
|
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);
|
|
ADD_METHOD_TO(AudioController::getWaveform, "/api/audio/{1}/waveform", Get);
|
|
ADD_METHOD_TO(AudioController::downloadAudio, "/api/audio/{1}/download", Get);
|
|
|
|
// 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<void(const HttpResponsePtr &)> &&callback);
|
|
|
|
void getLatestAudio(const HttpRequestPtr &req,
|
|
std::function<void(const HttpResponsePtr &)> &&callback);
|
|
|
|
void getAudio(const HttpRequestPtr &req,
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
|
const std::string &audioId);
|
|
|
|
void getRealmAudio(const HttpRequestPtr &req,
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
|
const std::string &realmId);
|
|
|
|
void getRealmAudioByName(const HttpRequestPtr &req,
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
|
const std::string &realmName);
|
|
|
|
void incrementPlayCount(const HttpRequestPtr &req,
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
|
const std::string &audioId);
|
|
|
|
void getWaveform(const HttpRequestPtr &req,
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
|
const std::string &audioId);
|
|
|
|
void downloadAudio(const HttpRequestPtr &req,
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
|
const std::string &audioId);
|
|
|
|
// Authenticated audio management
|
|
void getMyAudio(const HttpRequestPtr &req,
|
|
std::function<void(const HttpResponsePtr &)> &&callback);
|
|
|
|
void uploadAudio(const HttpRequestPtr &req,
|
|
std::function<void(const HttpResponsePtr &)> &&callback);
|
|
|
|
void updateAudio(const HttpRequestPtr &req,
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
|
const std::string &audioId);
|
|
|
|
void deleteAudio(const HttpRequestPtr &req,
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
|
const std::string &audioId);
|
|
|
|
void uploadThumbnail(const HttpRequestPtr &req,
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
|
const std::string &audioId);
|
|
|
|
void deleteThumbnail(const HttpRequestPtr &req,
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
|
const std::string &audioId);
|
|
};
|