Skip to content

Commit

Permalink
Cleanup route paths to avoid conflicts
Browse files Browse the repository at this point in the history
  • Loading branch information
Su5eD committed Jan 31, 2025
1 parent c276d66 commit d7a165c
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 28 deletions.
17 changes: 9 additions & 8 deletions src/api/v1/auth.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,20 @@ namespace api::v1 {
explicit AuthController(const std::string &, const std::string &, const std::string &, const std::string &, const std::string &,
service::Auth &, service::GitHub &, service::MemoryCache &, service::Database &);

// clang-format off
METHOD_LIST_BEGIN
ADD_METHOD_TO(AuthController::initLogin, "/api/v1/auth/login", drogon::Get);
ADD_METHOD_TO(AuthController::callbackGithub, "/api/v1/auth/callback/github?code={1:code}", drogon::Get);
ADD_METHOD_TO(AuthController::logout, "/api/v1/auth/logout", drogon::Get);
ADD_METHOD_TO(AuthController::initLogin, "/api/v1/auth/login", drogon::Get);
ADD_METHOD_TO(AuthController::callbackGithub, "/api/v1/auth/callback/github?code={1:code}", drogon::Get);
ADD_METHOD_TO(AuthController::logout, "/api/v1/auth/logout", drogon::Get);

ADD_METHOD_TO(AuthController::linkModrinth, "/api/v1/auth/link/modrinth", drogon::Get, "AuthFilter");
ADD_METHOD_TO(AuthController::linkModrinth, "/api/v1/auth/link/modrinth", drogon::Get, "AuthFilter");
ADD_METHOD_TO(AuthController::callbackModrinth, "/api/v1/auth/callback/modrinth?code={1:code}&state={2:state}", drogon::Get);
ADD_METHOD_TO(AuthController::unlinkModrinth, "/api/v1/auth/unlink/modrinth", drogon::Post, "AuthFilter");
ADD_METHOD_TO(AuthController::unlinkModrinth, "/api/v1/auth/unlink/modrinth", drogon::Post, "AuthFilter");

ADD_METHOD_TO(AuthController::userProfile, "/api/v1/auth/user", drogon::Get, "AuthFilter");

ADD_METHOD_TO(AuthController::deleteAccount, "/api/v1/auth/user", drogon::Delete, "AuthFilter");
ADD_METHOD_TO(AuthController::userProfile, "/api/v1/auth/user", drogon::Get, "AuthFilter");
ADD_METHOD_TO(AuthController::deleteAccount, "/api/v1/auth/user", drogon::Delete, "AuthFilter");
METHOD_LIST_END
// clang-format on

drogon::Task<> initLogin(drogon::HttpRequestPtr req, std::function<void(const drogon::HttpResponsePtr &)> callback) const;
drogon::Task<> callbackGithub(drogon::HttpRequestPtr req, std::function<void(const drogon::HttpResponsePtr &)> callback,
Expand Down
9 changes: 3 additions & 6 deletions src/api/v1/docs.cc
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,7 @@ namespace api::v1 {
co_return;
}

Json::Value root;
root["project"] = resolved->toJson();

const auto resp = HttpResponse::newHttpJsonResponse(root);
const auto resp = HttpResponse::newHttpJsonResponse(resolved->toJson());
resp->setStatusCode(k200OK);
callback(resp);
} catch (const HttpException &err) {
Expand All @@ -66,7 +63,7 @@ namespace api::v1 {

Task<> DocsController::page(HttpRequestPtr req, std::function<void(const HttpResponsePtr &)> callback, std::string project) const {
try {
std::string prefix = std::format("/api/v1/project/{}/page/", project);
std::string prefix = std::format("/api/v1/docs/{}/page/", project);
std::string path = req->getPath().substr(prefix.size());

if (path.empty()) {
Expand Down Expand Up @@ -147,7 +144,7 @@ namespace api::v1 {
co_return;
}

std::string prefix = std::format("/api/v1/project/{}/asset/", project);
std::string prefix = std::format("/api/v1/docs/{}/asset", project);
std::string location = req->getPath().substr(prefix.size());

if (location.empty()) {
Expand Down
9 changes: 5 additions & 4 deletions src/api/v1/docs.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@ namespace api::v1 {
explicit DocsController(Database &, Storage &);

METHOD_LIST_BEGIN
ADD_METHOD_TO(DocsController::project, "/api/v1/project/{1:project}", drogon::Get, "AuthFilter");
ADD_METHOD_TO(DocsController::page, "/api/v1/project/{1:project}/page/.*", drogon::Get, "AuthFilter");
ADD_METHOD_TO(DocsController::tree, "/api/v1/project/{1:project}/tree", drogon::Get, "AuthFilter");
ADD_METHOD_TO(DocsController::asset, "/api/v1/project/{1:project}/asset/.*", drogon::Get); // Public
ADD_METHOD_TO(DocsController::project, "/api/v1/docs/{1:project}", drogon::Get, "AuthFilter");
ADD_METHOD_TO(DocsController::page, "/api/v1/docs/{1:project}/page/.*", drogon::Get, "AuthFilter");
ADD_METHOD_TO(DocsController::tree, "/api/v1/docs/{1:project}/tree", drogon::Get, "AuthFilter");
// Public
ADD_METHOD_TO(DocsController::asset, "/api/v1/docs/{1:project}/asset/.*", drogon::Get);
METHOD_LIST_END

drogon::Task<> project(drogon::HttpRequestPtr req, std::function<void(const drogon::HttpResponsePtr &)> callback,
Expand Down
25 changes: 15 additions & 10 deletions src/api/v1/projects.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,23 @@ namespace api::v1 {
public:
explicit ProjectsController(Auth &, Platforms &, Database &, Storage &, CloudFlare &);

// clang-format off
METHOD_LIST_BEGIN
ADD_METHOD_TO(ProjectsController::greet, "/", drogon::Get);
ADD_METHOD_TO(ProjectsController::listIDs, "/api/v1/projects", drogon::Get, "AuthFilter");
ADD_METHOD_TO(ProjectsController::listUserProjects, "/api/v1/projects/dev", drogon::Get, "AuthFilter");
ADD_METHOD_TO(ProjectsController::getProjectLog, "/api/v1/project/{1:id}/log", drogon::Get, "AuthFilter");
ADD_METHOD_TO(ProjectsController::listPopularProjects, "/api/v1/projects/popular", drogon::Get, "AuthFilter");
ADD_METHOD_TO(ProjectsController::getProject, "/api/v1/project/{1:id}", drogon::Get, "AuthFilter");
ADD_METHOD_TO(ProjectsController::create, "/api/v1/project/create", drogon::Post, "AuthFilter");
ADD_METHOD_TO(ProjectsController::remove, "/api/v1/project/{1:id}/remove", drogon::Post, "AuthFilter");
ADD_METHOD_TO(ProjectsController::update, "/api/v1/project/update", drogon::Post, "AuthFilter");
ADD_METHOD_TO(ProjectsController::invalidate, "/api/v1/project/{1:id}/invalidate", drogon::Post, "AuthFilter");
// Public
ADD_METHOD_TO(ProjectsController::greet, "/", drogon::Get);
// Internal
ADD_METHOD_TO(ProjectsController::listIDs, "/api/v1/projects", drogon::Get, "AuthFilter");
ADD_METHOD_TO(ProjectsController::listPopularProjects, "/api/v1/projects/popular", drogon::Get, "AuthFilter");
// Private
ADD_METHOD_TO(ProjectsController::listUserProjects, "/api/v1/dev/projects", drogon::Get, "AuthFilter");
ADD_METHOD_TO(ProjectsController::getProject, "/api/v1/dev/projects/{1:id}", drogon::Get, "AuthFilter");
ADD_METHOD_TO(ProjectsController::getProjectLog, "/api/v1/dev/projects/{1:id}/log", drogon::Get, "AuthFilter");
ADD_METHOD_TO(ProjectsController::create, "/api/v1/dev/projects", drogon::Post, "AuthFilter");
ADD_METHOD_TO(ProjectsController::update, "/api/v1/dev/projects", drogon::Put, "AuthFilter");
ADD_METHOD_TO(ProjectsController::remove, "/api/v1/dev/projects/{1:id}", drogon::Delete, "AuthFilter");
ADD_METHOD_TO(ProjectsController::invalidate, "/api/v1/dev/projects/{1:id}/invalidate", drogon::Post, "AuthFilter");
METHOD_LIST_END
// clang-format on

drogon::Task<> greet(drogon::HttpRequestPtr req, std::function<void(const drogon::HttpResponsePtr &)> callback) const;

Expand Down

0 comments on commit d7a165c

Please sign in to comment.