1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #pragma once
- #include "ImageBoard.hpp"
- namespace QuickMedia {
- // |post_id| is optional
- bool fourchan_extract_url(const std::string &url, std::string &board_id, std::string &thread_id, std::string &post_id);
- class FourchanBoardsPage : public Page {
- public:
- FourchanBoardsPage(Program *program, std::string resources_root) : Page(program), resources_root(std::move(resources_root)) {}
- const char* get_title() const override { return "Select board"; }
- PluginResult submit(const SubmitArgs &args, std::vector<Tab> &result_tabs) override;
- void get_boards(BodyItems &result_items);
- const std::string resources_root;
- std::string pass_id;
- };
- class FourchanLoginPage : public LazyFetchPage {
- public:
- FourchanLoginPage(Program *program, std::string title, FourchanBoardsPage *boards_page, std::vector<Tab> *tabs, size_t tab_index) :
- LazyFetchPage(program), title(std::move(title)), boards_page(boards_page), tabs(tabs), tab_index(tab_index) {}
- const char* get_title() const override { return title.c_str(); }
- PluginResult submit(const SubmitArgs&, std::vector<Tab>&) override;
- PluginResult lazy_fetch(BodyItems &result_items) override;
- bool submit_is_async() const override { return true; }
- bool allow_submit_no_selection() const override { return true; }
- bool lazy_fetch_is_loader() override { return true; }
- void login_finish();
- const LoginInputs *login_inputs;
- private:
- enum class LoggedIn {
- Unknown,
- Yes,
- No
- };
- std::string title;
- FourchanBoardsPage *boards_page;
- std::vector<Tab> *tabs;
- size_t tab_index;
- LoggedIn logged_in = LoggedIn::Unknown;
- };
- class FourchanThreadListPage : public LazyFetchPage {
- public:
- FourchanThreadListPage(Program *program, std::string title, std::string board_id, std::string pass_id) :
- LazyFetchPage(program), title(std::move(title)), board_id(std::move(board_id)), pass_id(std::move(pass_id)) {}
- const char* get_title() const override { return title.c_str(); }
- PluginResult submit(const SubmitArgs &args, std::vector<Tab> &result_tabs) override;
- PluginResult lazy_fetch(BodyItems &result_items) override;
- const std::string title;
- const std::string board_id;
- std::string pass_id;
- };
- class FourchanThreadPage : public ImageBoardThreadPage {
- public:
- FourchanThreadPage(Program *program, std::string board_id, std::string thread_id, std::string post_id, std::string pass_id) :
- ImageBoardThreadPage(program, std::move(board_id), std::move(thread_id), std::move(post_id)), pass_id(std::move(pass_id)) {}
- PluginResult lazy_fetch(BodyItems &result_items) override;
- PostResult post_comment(const std::string &captcha_id, const std::string &captcha_solution, const std::string &comment, const std::string &filepath = "") override;
- const std::string& get_pass_id() override;
- PluginResult request_captcha_challenge(ImageBoardCaptchaChallenge &challenge_response) override;
- private:
- std::string pass_id;
- };
- }
|