73 lines
3.2 KiB
C
73 lines
3.2 KiB
C
|
|
#pragma once
|
||
|
|
#include <drogon/HttpController.h>
|
||
|
|
#include "../services/AuthService.h"
|
||
|
|
|
||
|
|
using namespace drogon;
|
||
|
|
|
||
|
|
class EbookController : public HttpController<EbookController> {
|
||
|
|
public:
|
||
|
|
METHOD_LIST_BEGIN
|
||
|
|
// Public endpoints
|
||
|
|
ADD_METHOD_TO(EbookController::getAllEbooks, "/api/ebooks", Get);
|
||
|
|
ADD_METHOD_TO(EbookController::getLatestEbooks, "/api/ebooks/latest", Get);
|
||
|
|
ADD_METHOD_TO(EbookController::getEbook, "/api/ebooks/{1}", Get);
|
||
|
|
ADD_METHOD_TO(EbookController::getUserEbooks, "/api/ebooks/user/{1}", Get);
|
||
|
|
ADD_METHOD_TO(EbookController::getRealmEbooks, "/api/ebooks/realm/{1}", Get);
|
||
|
|
ADD_METHOD_TO(EbookController::incrementReadCount, "/api/ebooks/{1}/read", Post);
|
||
|
|
|
||
|
|
// Authenticated endpoints
|
||
|
|
ADD_METHOD_TO(EbookController::getMyEbooks, "/api/user/ebooks", Get);
|
||
|
|
ADD_METHOD_TO(EbookController::uploadEbook, "/api/user/ebooks", Post);
|
||
|
|
ADD_METHOD_TO(EbookController::updateEbook, "/api/ebooks/{1}", Put);
|
||
|
|
ADD_METHOD_TO(EbookController::deleteEbook, "/api/ebooks/{1}", Delete);
|
||
|
|
ADD_METHOD_TO(EbookController::uploadCover, "/api/ebooks/{1}/cover", Post);
|
||
|
|
ADD_METHOD_TO(EbookController::downloadEbook, "/api/ebooks/{1}/download", Get);
|
||
|
|
METHOD_LIST_END
|
||
|
|
|
||
|
|
// Public ebook listing
|
||
|
|
void getAllEbooks(const HttpRequestPtr &req,
|
||
|
|
std::function<void(const HttpResponsePtr &)> &&callback);
|
||
|
|
|
||
|
|
void getLatestEbooks(const HttpRequestPtr &req,
|
||
|
|
std::function<void(const HttpResponsePtr &)> &&callback);
|
||
|
|
|
||
|
|
void getEbook(const HttpRequestPtr &req,
|
||
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
||
|
|
const std::string &ebookId);
|
||
|
|
|
||
|
|
void getUserEbooks(const HttpRequestPtr &req,
|
||
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
||
|
|
const std::string &username);
|
||
|
|
|
||
|
|
void getRealmEbooks(const HttpRequestPtr &req,
|
||
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
||
|
|
const std::string &realmId);
|
||
|
|
|
||
|
|
void incrementReadCount(const HttpRequestPtr &req,
|
||
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
||
|
|
const std::string &ebookId);
|
||
|
|
|
||
|
|
// Authenticated ebook management
|
||
|
|
void getMyEbooks(const HttpRequestPtr &req,
|
||
|
|
std::function<void(const HttpResponsePtr &)> &&callback);
|
||
|
|
|
||
|
|
void uploadEbook(const HttpRequestPtr &req,
|
||
|
|
std::function<void(const HttpResponsePtr &)> &&callback);
|
||
|
|
|
||
|
|
void updateEbook(const HttpRequestPtr &req,
|
||
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
||
|
|
const std::string &ebookId);
|
||
|
|
|
||
|
|
void deleteEbook(const HttpRequestPtr &req,
|
||
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
||
|
|
const std::string &ebookId);
|
||
|
|
|
||
|
|
void uploadCover(const HttpRequestPtr &req,
|
||
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
||
|
|
const std::string &ebookId);
|
||
|
|
|
||
|
|
void downloadEbook(const HttpRequestPtr &req,
|
||
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
||
|
|
const std::string &ebookId);
|
||
|
|
};
|