aboutsummaryrefslogtreecommitdiff
path: root/plugins/Fourchan.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Fourchan.hpp')
-rw-r--r--plugins/Fourchan.hpp61
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