summaryrefslogtreecommitdiff
path: root/server/modules
diff options
context:
space:
mode:
Diffstat (limited to 'server/modules')
-rw-r--r--server/modules/downloaders/curl/curl.cbp46
-rw-r--r--server/modules/downloaders/curl/main.cpp107
-rw-r--r--server/modules/downloaders/curl/main.h53
3 files changed, 206 insertions, 0 deletions
diff --git a/server/modules/downloaders/curl/curl.cbp b/server/modules/downloaders/curl/curl.cbp
new file mode 100644
index 0000000..f9ded9a
--- /dev/null
+++ b/server/modules/downloaders/curl/curl.cbp
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+ <FileVersion major="1" minor="6" />
+ <Project>
+ <Option title="curl" />
+ <Option pch_mode="2" />
+ <Option compiler="gcc" />
+ <Build>
+ <Target title="Debug">
+ <Option output="bin/Debug/curl" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj/Debug/" />
+ <Option type="3" />
+ <Option compiler="gcc" />
+ <Option createDefFile="1" />
+ <Option createStaticLib="1" />
+ <Compiler>
+ <Add option="-g" />
+ </Compiler>
+ </Target>
+ <Target title="Release">
+ <Option output="bin/Release/curl" prefix_auto="1" extension_auto="1" />
+ <Option object_output="obj/Release/" />
+ <Option type="3" />
+ <Option compiler="gcc" />
+ <Option createDefFile="1" />
+ <Option createStaticLib="1" />
+ <Compiler>
+ <Add option="-O2" />
+ </Compiler>
+ <Linker>
+ <Add option="-s" />
+ </Linker>
+ </Target>
+ </Build>
+ <Compiler>
+ <Add option="-Wall" />
+ <Add option="-fexceptions -fPIC" />
+ </Compiler>
+ <Unit filename="main.cpp" />
+ <Unit filename="main.h" />
+ <Extensions>
+ <code_completion />
+ <debugger />
+ </Extensions>
+ </Project>
+</CodeBlocks_project_file>
diff --git a/server/modules/downloaders/curl/main.cpp b/server/modules/downloaders/curl/main.cpp
new file mode 100644
index 0000000..bafd2fb
--- /dev/null
+++ b/server/modules/downloaders/curl/main.cpp
@@ -0,0 +1,107 @@
+
+/*
+ Copyright © 2015 Gluzskiy Alexandr (sss)
+
+ This file is part of Unknown Download Manager (UDM).
+
+ UDM is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ UDM is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with UDM. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "main.h"
+#include <boost/bind.hpp>
+
+
+
+module_base::~module_base()
+{
+}
+
+
+downloader::downloader()
+{
+}
+
+void downloader::on_modules_loaded()
+{
+}
+
+void downloader::load(core_api *a)
+{
+ api = a;
+
+ info.name = "curl";
+ info.description = "basic http/ftp downloader via libcurl, also example how to write downloader modules";
+ info.version = "0.0.0.1draft";
+ info.on_modules_loaded = boost::bind(&downloader::on_modules_loaded, this); //optional definition of function which is called after all modules loaded
+}
+
+const module_info &downloader::get_module_info()
+{
+ return info;
+}
+
+void downloader::set_module_settings(const std::map<std::string, std::string> &settings)
+{
+ this->settings = settings;
+}
+
+
+int add_download(std::map<std::string, std::string> params)
+{
+ //TODO:
+ return 0;
+}
+
+bool stop_download(int download_id)
+{
+ //TODO:
+ return true;
+}
+
+bool start_download(int download_id)
+{
+ //TODO:
+ return true;
+}
+
+bool delete_download(int download_id, bool delete_data)
+{
+ //TODO:
+ return true;
+}
+
+bool execute_action_on_download(int download_id, std::string action_id)
+{
+ //TODO:
+ return true;
+}
+
+std::list<download_s> get_downloads(std::map<std::string, std::string> params)
+{
+ //TODO:
+ return std::list<download_s>();
+}
+
+download_s get_download_info(int download_id, std::map<std::string, std::string> params)
+{
+ //TODO:
+ return download_s();
+}
+
+extern "C" module_downloader* udm_downloader_module_load()
+{
+ return new downloader;
+}
+
diff --git a/server/modules/downloaders/curl/main.h b/server/modules/downloaders/curl/main.h
new file mode 100644
index 0000000..16580ec
--- /dev/null
+++ b/server/modules/downloaders/curl/main.h
@@ -0,0 +1,53 @@
+/*
+ Copyright © 2015 Gluzskiy Alexandr (sss)
+
+ This file is part of Unknown Download Manager (UDM).
+
+ UDM is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ UDM is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with UDM. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+
+#ifndef MAIN_H_INCLUDED
+#define MAIN_H_INCLUDED
+
+#include <api_module_downloader.h>
+
+class downloader : public module_downloader
+{
+public:
+ //core module api
+ downloader();
+ void load(core_api *a);
+ const module_info &get_module_info();
+ void set_module_settings(const std::map<std::string, std::string> &settings); //will called with settings stored in config
+ ~downloader();
+ //downloader module api
+ int add_download(std::map<std::string, std::string> params); //add download, this function must return unique for current session and current downloader download id
+ bool stop_download(int download_id); //stop download by id received via add_download, return true on success, false otherwise
+ bool start_download(int download_id); //start download by id received via add_download, return true on success, false otherwise
+ bool delete_download(int download_id, bool delete_data = false); //delete download by id received via add_download, if "delete_data" is set, also remove all downloaded data from storage, return true on success, false otherwise
+ bool execute_action_on_download(int download_id, std::string action_id); //execute module defined action on download, by id received via add_download
+ std::list<download_s> get_downloads(std::map<std::string, std::string> params = std::map<std::string, std::string>()); //this function must return list of downloads, additional options may be passed via params map
+ download_s get_download_info(int download_id, std::map<std::string, std::string> params = std::map<std::string, std::string>()); //same as above, except this one is for single download, not a complete list
+private:
+ void on_modules_loaded();
+ downloader_module_info info;
+ core_api *api = nullptr;
+ std::map<std::string, std::string> settings;
+};
+
+
+
+#endif // MAIN_H_INCLUDED