diff options
Diffstat (limited to 'plugins/Fourchan.hpp')
-rw-r--r-- | plugins/Fourchan.hpp | 61 |
1 files changed, 25 insertions, 36 deletions
diff --git a/plugins/Fourchan.hpp b/plugins/Fourchan.hpp index bc336bf..3ee07dd 100644 --- a/plugins/Fourchan.hpp +++ b/plugins/Fourchan.hpp @@ -1,49 +1,38 @@ #pragma once #include "ImageBoard.hpp" -#include <thread> -#include <mutex> -#include <condition_variable> namespace QuickMedia { - class Program; + 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 std::string &title, const std::string &url, std::vector<Tab> &result_tabs) override; + void get_boards(BodyItems &result_items); + + const std::string resources_root; + }; - class Fourchan : public ImageBoard { + class FourchanThreadListPage : public Page { public: - Fourchan(const std::string &resources_root); - ~Fourchan() override; - PluginResult get_front_page(BodyItems &result_items) override; - PluginResult get_threads(const std::string &url, BodyItems &result_items) override; - PluginResult get_thread_comments(const std::string &list_url, const std::string &url, BodyItems &result_items) override; - PostResult post_comment(const std::string &board, const std::string &thread, const std::string &captcha_id, const std::string &comment) override; - bool search_suggestions_has_thumbnails() const override { return false; } - bool search_results_has_thumbnails() const override { return false; } - int get_search_delay() const override { return 150; } - Page get_page_after_search() const override { return Page::IMAGE_BOARD_THREAD_LIST; } - bool search_is_filter() override { return true; } - BodyItems get_related_media(const std::string &url) override; + FourchanThreadListPage(Program *program, std::string title, std::string board_id) : Page(program), title(std::move(title)), board_id(std::move(board_id)) {} + const char* get_title() const override { return title.c_str(); } + PluginResult submit(const std::string &title, const std::string &url, std::vector<Tab> &result_tabs) override; - PluginResult login(const std::string &token, const std::string &pin, std::string &response_msg); - const std::string& get_pass_id() const override; + const std::string title; + const std::string board_id; private: - PluginResult get_threads_internal(const std::string &url, BodyItems &result_items); - void set_board_url(const std::string &new_url); - std::string get_board_url(); - void set_board_thread_list(BodyItems body_items); - BodyItems get_board_thread_list(); - private: - std::string current_board_url; - std::thread thread_list_update_thread; - BodyItems cached_thread_list_items; - std::mutex board_url_mutex; - std::mutex board_list_mutex; - std::condition_variable thread_list_cached_cv; - std::mutex thread_list_cache_mutex; - std::condition_variable thread_list_update_cv; - bool thread_list_cached = false; - bool running = true; std::vector<std::string> cached_media_urls; - std::string resources_root; + }; + + class FourchanThreadPage : public ImageBoardThreadPage { + public: + FourchanThreadPage(Program *program, std::string board_id, std::string thread_id, std::vector<std::string> cached_media_urls) : ImageBoardThreadPage(program, std::move(board_id), std::move(thread_id), std::move(cached_media_urls)) {} + + PluginResult login(const std::string &token, const std::string &pin, std::string &response_msg) override; + PostResult post_comment(const std::string &captcha_id, const std::string &comment) override; + const std::string& get_pass_id() override; + private: std::string pass_id; }; }
\ No newline at end of file |