Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef AOU_CURLMANAGER_H
- #define AOU_CURLMANAGER_H
- #include <System/Exceptions.h>
- #include <curl/curl.h>
- #include <map>
- #include <string>
- namespace aou {
- namespace exc {
- //--------------------------------------------------------------------
- class CURLInitFailed : public aou::exc::Exception{
- public:
- CURLInitFailed();
- virtual ~CURLInitFailed() = default;
- };
- //--------------------------------------------------------------------
- class CURLDownloadFileFailed : public aou::exc::Exception {
- public:
- CURLDownloadFileFailed(const std::string& desc);
- virtual ~CURLDownloadFileFailed() = default;
- };
- //--------------------------------------------------------------------
- class CURLUploadFileFailed : public aou::exc::Exception {
- public:
- CURLUploadFileFailed(const std::string& exc);
- virtual ~CURLUploadFileFailed() = default;
- };
- //--------------------------------------------------------------------
- }
- enum CURLOperationType {
- NONE,
- DOWNLOAD_FILE,
- UPLOAD_FILE,
- };
- //--------------------------------------------------------------------
- struct FTPServer {
- std::string url;
- std::string login;
- std::string pass;
- };
- //--------------------------------------------------------------------
- class CURLManager {
- private:
- CURLManager();
- public:
- virtual ~CURLManager();
- static CURLManager& GetInstance();
- virtual void DownloadFileFromHTTP(const std::string& url, const std::string& to_file);
- virtual void UploadFileToFTP(const std::string& ftp_server_id, const std::string& directory_in_ftp_server, const std::string& from_file);
- virtual void AddFTPServer(const std::string & ftp_server_id, const FTPServer& ftp_server);
- virtual void EraseFTPServer(const std::string& ftp_server_id);
- virtual const FTPServer& GetFTPServer(const std::string& ftp_server_id);
- inline CURL* GetCURLState() const;
- inline CURLOperationType GetLastOperationType() const {
- return last_operation_type;
- }
- private:
- virtual void ResetCURLOptionsIfNessesaryAndUpdateLastOperationTypeEnum(CURLOperationType this_operation_type);
- //curl functions
- static size_t curlfunction_write_data(void *ptr, size_t size, size_t nmemb, FILE *stream);
- static size_t curlfunction_read_data(void *ptr, size_t size, size_t nmemb, FILE *stream);
- /*
- * Member data
- */
- CURL* curl_state = nullptr;
- CURLOperationType last_operation_type = NONE;;
- std::map<std::string, FTPServer> ftp_servers;
- };
- //--------------------------------------------------------------------
- }
- #endif /* AOU_CURLMANAGER_H */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement