From d7a165c30a1a86226cf236fc714d7bb42f40b863 Mon Sep 17 00:00:00 2001 From: Su5eD Date: Fri, 31 Jan 2025 21:00:57 +0100 Subject: [PATCH] Cleanup route paths to avoid conflicts --- src/api/v1/auth.h | 17 +++++++++-------- src/api/v1/docs.cc | 9 +++------ src/api/v1/docs.h | 9 +++++---- src/api/v1/projects.h | 25 +++++++++++++++---------- 4 files changed, 32 insertions(+), 28 deletions(-) diff --git a/src/api/v1/auth.h b/src/api/v1/auth.h index 4f18a3a..043ef81 100644 --- a/src/api/v1/auth.h +++ b/src/api/v1/auth.h @@ -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 callback) const; drogon::Task<> callbackGithub(drogon::HttpRequestPtr req, std::function callback, diff --git a/src/api/v1/docs.cc b/src/api/v1/docs.cc index b18b17d..afb234b 100755 --- a/src/api/v1/docs.cc +++ b/src/api/v1/docs.cc @@ -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) { @@ -66,7 +63,7 @@ namespace api::v1 { Task<> DocsController::page(HttpRequestPtr req, std::function 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()) { @@ -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()) { diff --git a/src/api/v1/docs.h b/src/api/v1/docs.h index 05eabdc..b07b88a 100755 --- a/src/api/v1/docs.h +++ b/src/api/v1/docs.h @@ -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 callback, diff --git a/src/api/v1/projects.h b/src/api/v1/projects.h index fac105e..98870d8 100644 --- a/src/api/v1/projects.h +++ b/src/api/v1/projects.h @@ -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 callback) const;