#pragma once #include #include "pixivmodels.h" #include #include class PixivClient { public: PixivClient(); User get_user(uint64_t user_id); Illusts get_illusts(uint64_t user_id, size_t page); Illust get_illust(uint64_t illust_id); SearchResults search_illusts(const std::string& query, size_t page, const std::string& order); std::vector get_search_suggestions(const std::string& query); bool i_pximg_url_valid(const std::string& path); private: nlohmann::json _handle_result(httplib::Result res); httplib::Client _www_pixiv_net_client{"https://www.pixiv.net"}; httplib::Client _i_pximg_net_client{"https://i.pximg.net"}; }; class HTTPLibException : public std::exception { public: HTTPLibException(httplib::Error error) { this->_message = httplib::to_string(error); } inline const char* what() const noexcept { return this->_message.c_str(); } private: std::string _message; }; class PixivException : public std::exception { public: PixivException(int status_, std::string message) : status(status_), _message(std::move(message)) {} inline const char* what() const noexcept { return this->_message.c_str(); } int status; private: std::string _message; };