Implemented Deletion functionality #7

This commit is contained in:
amazing-username
2019-06-07 22:41:31 -04:00
parent 7a6916c3ff
commit 723206019e
10 changed files with 162 additions and 8 deletions
+16 -5
View File
@@ -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<string>{
"-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 "<<flg.value<<endl;
flags.push_back(flg);
flg = Flags{};
continue;
}
if (std::any_of(supportedFlags.begin(), supportedFlags.end(),
[&](string val)
{
if (val.size() < 3)
{
}
return !val.compare(flag);
}))
{
cout<<"flag "<<flag<<endl;
flg.flag = flag;
}
else
@@ -130,6 +140,7 @@ namespace Managers
for (auto i = 2; true; ++i)
{
string val{*(params + i)};
cout<<"Parsed flag "<<val<<endl;
parsed.push_back(val);
}
}
+2
View File
@@ -18,6 +18,8 @@ namespace Managers
std::vector<Models::Flags> retrieveFlags() const;
std::string retrieveAction() const;
private:
bool isNumber(std::string);
void initialize();
void initializeSupportedActions();
void initializeSupportedFlags();
+32
View File
@@ -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..."<<endl;
UserManager usrMgr{icaAction};
auto user = usrMgr.retrieveUser();
APIParser apiPrs{icaAction};
auto api = apiPrs.retrieveAPI();
TokenManager tk{user, api};
auto token = tk.requestToken();
Song song{};
for (auto arg : icaAction.flags)
{
auto flag = arg.flag;
auto value = arg.value;
if (flag.compare("-D") == 0)
{
song.id = atoi(value.c_str());
}
}
Delete del{api};
del.deleteSong(token, song);
}
void CommitManager::downloadSong()
{
// TODO: Implement this functionality
+1
View File
@@ -16,6 +16,7 @@ namespace Managers
void commitAction();
private:
void initializeMapActions();
void deleteSong();
void downloadSong();
void uploadSong();
+5
View File
@@ -40,17 +40,22 @@ namespace Managers
usrObj["username"] = user.username;
usrObj["password"] = user.password;
cout<<user.username<<" "<<user.password<<endl;
cout<<"Sending request for token"<<endl;
auto url = api.url + api.endpoint;
cout<<url<<endl;
auto r = cpr::Post(cpr::Url{url},
cpr::Body{usrObj.dump()},
cpr::Header{{"Content-Type", "application/json"}});
cout<<r.text<<endl;
json res = json::parse(r.text);
token.accessToken = res["token"];
token.tokenType = res["token_type"];
//cout<<"status code "<<r.status_code<<endl;
return token;
}
#pragma Functions