Added CLI functionality for uploading a song #7. Next thing that is up adding CLI functionality for downloading songs via id

This commit is contained in:
amazing-username
2019-06-05 20:51:56 -04:00
parent 8230f7b5ff
commit 7a6916c3ff
14 changed files with 185 additions and 27 deletions
+19 -14
View File
@@ -2,6 +2,9 @@
#include<iostream>
#include"Models/API.h"
#include"Models/Song.h"
#include"Parsers/APIParser.h"
#include"Syncers/Upload.h"
#include"TokenManager.h"
@@ -14,6 +17,9 @@ using std::string;
using Managers::TokenManager;
using Managers::UserManager;
using Models::API;
using Models::Song;
using Parsers::APIParser;
using Models::IcarusAction;
using Syncers::Upload;
@@ -38,6 +44,7 @@ namespace Managers
case deleteAct:
break;
case downloadAct:
downloadSong();
break;
case retrieveAct:
break;
@@ -55,16 +62,23 @@ namespace Managers
{"upload", uploadAct}
};
}
void CommitManager::downloadSong()
{
// TODO: Implement this functionality
}
void CommitManager::uploadSong()
{
cout<<"Uploading song..."<<endl;
UserManager usrMgr{icaAction};
auto user = usrMgr.retrieveUser();
TokenManager tk{user};
APIParser apiPrs{icaAction};
auto api = apiPrs.retrieveAPI();
TokenManager tk{user, api};
auto token = tk.requestToken();
string songPath{};
Song song{};
for (auto arg : icaAction.flags)
{
@@ -73,21 +87,12 @@ namespace Managers
if (flag.compare("-s") == 0)
{
songPath.assign(arg.value);
song.songPath.assign(arg.value);
}
}
Upload upld{};
upld.uploadSong(token, songPath);
// TODO: Implement functionality for uploading
//
// Need to the following:
// 1. Parse the login credentials from the Flag model x
// 2. Retrieve a token -- implement token management x
// 3. Parse song path from the Flag model x Make a parser class
// 4. Parse the HTTP API endpoint Make parser class
// 5. Upload the song x
Upload upld{api};
upld.uploadSong(token, song);
}
#pragma Functions
}
+1
View File
@@ -16,6 +16,7 @@ namespace Managers
void commitAction();
private:
void initializeMapActions();
void downloadSong();
void uploadSong();
enum ActionValues
+11 -1
View File
@@ -11,6 +11,7 @@ using std::endl;
using json = nlohmann::json;
using Managers::TokenManager;
using Models::API;
using Models::Token;
using Models::User;
@@ -21,6 +22,13 @@ namespace Managers
{
this->user = user;
}
TokenManager::TokenManager(const User user, API api)
{
this->user = user;
this->api = api;
this->api.endpoint = "api/" + api.version
+ "/login";
}
#pragma Constructors
@@ -33,7 +41,9 @@ namespace Managers
usrObj["username"] = user.username;
usrObj["password"] = user.password;
auto r = cpr::Post(cpr::Url{""},
cout<<"Sending request for token"<<endl;
auto url = api.url + api.endpoint;
auto r = cpr::Post(cpr::Url{url},
cpr::Body{usrObj.dump()},
cpr::Header{{"Content-Type", "application/json"}});
+3
View File
@@ -1,6 +1,7 @@
#ifndef TOKENMANAGER_H_
#define TOKENMANAGER_H_
#include"Models/API.h"
#include"Models/Token.h"
#include"Models/User.h"
@@ -10,9 +11,11 @@ namespace Managers
{
public:
TokenManager(const Models::User);
TokenManager(const Models::User, Models::API);
Models::Token requestToken();
private:
Models::API api;
Models::User user;
};
}
-1
View File
@@ -16,7 +16,6 @@ namespace Managers
UserManager::UserManager(User user)
{
this->user = user;
this->user = User{};
}
UserManager::UserManager(const IcarusAction icaAct)
{