diff --git a/CMakeLists.txt b/CMakeLists.txt index 9035c98..ebb439b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -48,6 +48,7 @@ set(SOURCES src/Managers/TokenManager.cpp src/Managers/UserManager.cpp src/Parsers/APIParser.cpp + src/Syncers/Delete.cpp src/Syncers/Download.cpp src/Syncers/Upload.cpp src/Utilities/Conversions.cpp @@ -66,6 +67,7 @@ set(HEADERS src/Models/UploadForm.h src/Models/User.h src/Parsers/APIParser.h + src/Syncers/Delete.h src/Syncers/Download.h src/Syncers/SyncerBase.h src/Syncers/Upload.h diff --git a/src/Managers/ActionManager.cpp b/src/Managers/ActionManager.cpp index 7ad8fcf..d1ba899 100644 --- a/src/Managers/ActionManager.cpp +++ b/src/Managers/ActionManager.cpp @@ -47,6 +47,15 @@ namespace Managers return action; } + bool ActionManager::isNumber(string val) + { + return !val.empty() && std::find_if(val.begin(), + val.end(), [](char c) + { + return !std::isdigit(c); + }) == val.end(); + } + void ActionManager::initialize() { initializeSupportedActions(); @@ -64,7 +73,7 @@ namespace Managers { supportedFlags = vector{ "-u", "-p", "-t", "-h", "-s", - "-d" + "-d", "-D" }; } void ActionManager::validateAction() @@ -96,22 +105,23 @@ namespace Managers for (auto flag : flagVals) { - if (flag.size() > 3) + //if (flag.size() > 3 || flg.flag.compare("-D")) + if (flag.size() > 3 || isNumber(flag)) { flg.value = flag; + cout<<"flag value "< retrieveFlags() const; std::string retrieveAction() const; private: + bool isNumber(std::string); + void initialize(); void initializeSupportedActions(); void initializeSupportedFlags(); diff --git a/src/Managers/CommitManager.cpp b/src/Managers/CommitManager.cpp index 6044ae2..4709ed5 100644 --- a/src/Managers/CommitManager.cpp +++ b/src/Managers/CommitManager.cpp @@ -5,6 +5,7 @@ #include"Models/API.h" #include"Models/Song.h" #include"Parsers/APIParser.h" +#include"Syncers/Delete.h" #include"Syncers/Upload.h" #include"TokenManager.h" @@ -21,6 +22,7 @@ using Models::API; using Models::Song; using Parsers::APIParser; using Models::IcarusAction; +using Syncers::Delete; using Syncers::Upload; namespace Managers @@ -42,6 +44,7 @@ namespace Managers switch (mapActions[action]) { case deleteAct: + deleteSong(); break; case downloadAct: downloadSong(); @@ -62,6 +65,35 @@ namespace Managers {"upload", uploadAct} }; } + void CommitManager::deleteSong() + { + cout<<"Deleting song..."< + +using std::cout; +using std::endl; + using Models::API; using Models::IcarusAction; @@ -24,16 +29,25 @@ namespace Parsers void APIParser::parseAPI() { auto flags = icaAct.flags; + cout<<"Parsing api"< +#include + +#include + +using std::cout; +using std::endl; +using std::exception; +using std::string; + +using Models::API; +using Models::Song; +using Models::Token; + +namespace Syncers +{ + #pragma + Delete::Delete(API api) + { + this->api = api; + this->api.endpoint = "song/data"; + } + #pragma Constructors + + + #pragma + void Delete::deleteSong(const Token token, Song song) + { + try + { + auto url = retrieveUrl(song); + string auth{token.tokenType}; + auth.append(" " + token.accessToken); + auto r = cpr::Delete(cpr::Url(url), + cpr::Header{{"authorization", auth}}); + + auto statusCode = r.status_code; + + cout<<"Status code "< + #include"Models/API.h" namespace Syncers