From 9dcd333d8f7ac35cadffd03325a0f72933a0dcc7 Mon Sep 17 00:00:00 2001 From: Gluzskiy Alexandr Date: Sun, 23 Aug 2015 13:51:45 +0300 Subject: server: started first downloader module implementation added api to get core settings downloads_dir in config --- server/modules/downloaders/curl/curl.cbp | 46 +++++++++++++ server/modules/downloaders/curl/main.cpp | 107 +++++++++++++++++++++++++++++++ server/modules/downloaders/curl/main.h | 53 +++++++++++++++ 3 files changed, 206 insertions(+) create mode 100644 server/modules/downloaders/curl/curl.cbp create mode 100644 server/modules/downloaders/curl/main.cpp create mode 100644 server/modules/downloaders/curl/main.h (limited to 'server/modules') 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 @@ + + + + + + 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 . + +*/ + +#include "main.h" +#include + + + +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 &settings) +{ + this->settings = settings; +} + + +int add_download(std::map 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 get_downloads(std::map params) +{ + //TODO: + return std::list(); +} + +download_s get_download_info(int download_id, std::map 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 . + +*/ + + +#ifndef MAIN_H_INCLUDED +#define MAIN_H_INCLUDED + +#include + +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 &settings); //will called with settings stored in config + ~downloader(); + //downloader module api + int add_download(std::map 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 get_downloads(std::map params = std::map()); //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 params = std::map()); //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 settings; +}; + + + +#endif // MAIN_H_INCLUDED -- cgit v1.2.3