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:
@@ -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
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ namespace Managers
|
||||
void commitAction();
|
||||
private:
|
||||
void initializeMapActions();
|
||||
void downloadSong();
|
||||
void uploadSong();
|
||||
|
||||
enum ActionValues
|
||||
|
||||
@@ -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"}});
|
||||
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@ namespace Managers
|
||||
UserManager::UserManager(User user)
|
||||
{
|
||||
this->user = user;
|
||||
this->user = User{};
|
||||
}
|
||||
UserManager::UserManager(const IcarusAction icaAct)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user