aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Plugin.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2019-08-05 21:07:11 +0200
committerdec05eba <dec05eba@protonmail.com>2019-08-05 21:07:14 +0200
commitb894f0b2283a4fcd42fc41f9517b16d623ae3adb (patch)
treebca95c9bcf3947886fd85d1759cb8349a563bfd2 /src/plugins/Plugin.cpp
parent2b294258bbc89f1b49554468022a035782e49074 (diff)
Add thumbnails for manganelo
Diffstat (limited to 'src/plugins/Plugin.cpp')
-rw-r--r--src/plugins/Plugin.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/plugins/Plugin.cpp b/src/plugins/Plugin.cpp
new file mode 100644
index 0000000..d87ac34
--- /dev/null
+++ b/src/plugins/Plugin.cpp
@@ -0,0 +1,52 @@
+#include "../../plugins/Plugin.hpp"
+#include "../../include/Program.h"
+#include <sstream>
+#include <iomanip>
+
+static int accumulate_string(char *data, int size, void *userdata) {
+ std::string *str = (std::string*)userdata;
+ str->append(data, size);
+ return 0;
+}
+
+namespace QuickMedia {
+ SuggestionResult Plugin::update_search_suggestions(const std::string &text, std::vector<std::unique_ptr<BodyItem>> &result_items) {
+ (void)text;
+ (void)result_items;
+ return SuggestionResult::OK;
+ }
+
+ std::vector<std::unique_ptr<BodyItem>> Plugin::get_related_media(const std::string &url) {
+ (void)url;
+ return {};
+ }
+
+ DownloadResult download_to_string(const std::string &url, std::string &result, const std::vector<CommandArg> &additional_args) {
+ std::vector<const char*> args = { "curl", "-H", "Accept-Language: en-US,en;q=0.5", "--compressed", "-s", "-L", url.c_str() };
+ for(const CommandArg &arg : additional_args) {
+ args.push_back(arg.option.c_str());
+ args.push_back(arg.value.c_str());
+ }
+ args.push_back(nullptr);
+ if(exec_program(args.data(), accumulate_string, &result) != 0)
+ return DownloadResult::NET_ERR;
+ return DownloadResult::OK;
+ }
+
+ std::string Plugin::url_param_encode(const std::string &param) const {
+ std::ostringstream result;
+ result.fill('0');
+ result << std::hex;
+
+ for(char c : param) {
+ if(isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~') {
+ result << c;
+ } else {
+ result << std::uppercase;
+ result << "%" << std::setw(2) << (int)(unsigned char)(c);
+ }
+ }
+
+ return result.str();
+ }
+} \ No newline at end of file