Strip /en/ off of proxied pixiv urls

This commit is contained in:
blankie 2023-04-10 19:55:32 +07:00
parent 79bae2c013
commit 2dc6fe809e
Signed by: blankie
GPG Key ID: CC15FC822C7F61F5
1 changed files with 13 additions and 1 deletions

View File

@ -15,6 +15,7 @@ static inline Element generate_illust_tags(const Illust& illust);
static inline bool is_true(const std::string& str); static inline bool is_true(const std::string& str);
static inline std::string time_to_string(time_t time); static inline std::string time_to_string(time_t time);
static inline std::string proxy_pixiv_url(const httplib::Request& req, const Config& config, blankie::murl::Url url);
void artworks_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) {
uint64_t illust_id = to_ull(req.matches.str(1)); uint64_t illust_id = to_ull(req.matches.str(1));
@ -123,7 +124,7 @@ static inline std::vector<blankie::html::Node> parse_description_line(const http
blankie::murl::Url url(sm.str(0)); blankie::murl::Url url(sm.str(0));
std::string url_str = url.is_host_equal("pixiv.net") || url.is_host_equal("www.pixiv.net") std::string url_str = url.is_host_equal("pixiv.net") || url.is_host_equal("www.pixiv.net")
? proxy_url(get_origin(req, config), std::move(url)) ? proxy_pixiv_url(req, config, std::move(url))
: url.to_string(); : url.to_string();
nodes.push_back(Element("a", {{"href", url_str}}, {url_str})); nodes.push_back(Element("a", {{"href", url_str}}, {url_str}));
@ -197,3 +198,14 @@ static inline std::string time_to_string(time_t time) {
return std::string(str, len); return std::string(str, len);
} }
static inline std::string proxy_pixiv_url(const httplib::Request& req, const Config& config, blankie::murl::Url url) {
if (url.path.size() >= 4 && url.path.starts_with("/en/")) {
url.path.erase(0, 3);
} else if (url.path.size() == 3 && url.path == "/en") {
url.path = '/';
}
// TODO strip the lang query parameter
return proxy_url(get_origin(req, config), std::move(url));
}