From 933affe6b47e865199ecf7db861810728c820daf Mon Sep 17 00:00:00 2001 From: blankie Date: Sun, 9 Apr 2023 22:33:14 +0700 Subject: [PATCH] Redirect /users/\d+ to /users/\1/illustrations --- CMakeLists.txt | 2 +- main.cpp | 2 +- routes/routes.h | 1 - routes/users/users.cpp | 27 --------------------------- 4 files changed, 2 insertions(+), 30 deletions(-) delete mode 100644 routes/users/users.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 75f0959..5ffb3af 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,7 @@ add_link_options(${FLAGS}) add_executable(${PROJECT_NAME} main.cpp misc.cpp config.cpp servehelper.cpp numberhelper.cpp pixivclient.cpp pixivmodels.cpp blankie/serializer.cpp blankie/escape.cpp blankie/murl.cpp - routes/home.cpp routes/css.cpp routes/artworks.cpp routes/users/common.cpp routes/users/users.cpp routes/users/illustrations.cpp) + routes/home.cpp routes/css.cpp routes/artworks.cpp routes/users/common.cpp routes/users/illustrations.cpp) set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 20 diff --git a/main.cpp b/main.cpp index 156f61f..89d168d 100644 --- a/main.cpp +++ b/main.cpp @@ -29,7 +29,7 @@ int main(int argc, char** argv) { server.Get("/style\\.css", css_route); server.Get("/users/(\\d+)", [&](const httplib::Request& req, httplib::Response& res) { - users_route(req, res, config, pixiv_client); + serve_redirect(req, res, config, get_origin(req, config) + "/users/" + req.matches.str(1) + "/illustrations"); }); server.Get("/users/(\\d+)/illustrations", [&](const httplib::Request& req, httplib::Response& res) { user_illustrations_route(req, res, config, pixiv_client); diff --git a/routes/routes.h b/routes/routes.h index 92d24c7..69532de 100644 --- a/routes/routes.h +++ b/routes/routes.h @@ -7,6 +7,5 @@ class PixivClient; // forward declaration from ../pixivclient.h void home_route(const httplib::Request& req, httplib::Response& res, const Config& config); void css_route(const httplib::Request& req, httplib::Response& res); -void users_route(const httplib::Request& req, httplib::Response& res, const Config& config, PixivClient& pixiv_client); void user_illustrations_route(const httplib::Request& req, httplib::Response& res, const Config& config, PixivClient& pixiv_client); void artworks_route(const httplib::Request& req, httplib::Response& res, const Config& config, PixivClient& pixiv_client); diff --git a/routes/users/users.cpp b/routes/users/users.cpp deleted file mode 100644 index d7c013f..0000000 --- a/routes/users/users.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include "../routes.h" -#include "../../numberhelper.h" -#include "../../servehelper.h" -#include "../../pixivclient.h" -#include "common.h" - -void users_route(const httplib::Request& req, httplib::Response& res, const Config& config, PixivClient& pixiv_client) { - uint64_t user_id = to_ull(req.matches[1].str()); - User user; - try { - user = pixiv_client.get_user(user_id); - } catch (const PixivException& e) { - if (e.status == 404) { - res.status = 404; - serve_error(req, res, config, "404: User not found", e.what()); - } else { - res.status = 500; - serve_error(req, res, config, "500: Internal server error", "Failed to fetch user information", e.what()); - } - return; - } catch (const std::exception& e) { - res.status = 500; - serve_error(req, res, config, "500: Internal server error", "Failed to fetch user information", e.what()); - return; - } - serve(req, res, config, user.display_name + " (@" + user.username + ')', generate_user_header(user, config)); -}