diff --git a/CMakeLists.txt b/CMakeLists.txt index 3ba7f71..03175c7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,6 +45,8 @@ set(SOURCES src/Managers/ActionManager.cpp src/Managers/CommitManager.cpp src/Managers/FileManager.cpp + src/Managers/TokenManager.cpp + src/Managers/UserManager.cpp src/Syncers/Download.cpp src/Syncers/Upload.cpp src/Utilities/Conversions.cpp @@ -53,10 +55,12 @@ set(HEADERS src/Managers/ActionManager.h src/Managers/CommitManager.h src/Managers/FileManager.h - src/Models/Token.h + src/Managers/TokenManager.h + src/Managers/UserManager.h src/Models/Flags.h src/Models/IcarusAction.h src/Models/Song.h + src/Models/Token.h src/Models/UploadForm.h src/Models/User.h src/Syncers/Download.h diff --git a/src/Managers/ActionManager.cpp b/src/Managers/ActionManager.cpp index 5dbb2b4..7ad8fcf 100644 --- a/src/Managers/ActionManager.cpp +++ b/src/Managers/ActionManager.cpp @@ -103,7 +103,6 @@ namespace Managers flg = Flags{}; continue; } - cout<<"\nprovided flag: "< +#include"Syncers/Upload.h" + +#include"TokenManager.h" +#include"UserManager.h" + using std::cout; using std::endl; using std::map; using std::string; +using Managers::TokenManager; +using Managers::UserManager; using Models::IcarusAction; +using Syncers::Upload; namespace Managers { @@ -50,14 +58,36 @@ namespace Managers void CommitManager::uploadSong() { cout<<"Uploading song..."< + +#include +#include + +using std::cout; +using std::endl; + +using json = nlohmann::json; + +using Managers::TokenManager; +using Models::Token; +using Models::User; + +namespace Managers +{ + #pragma + TokenManager::TokenManager(const User user) + { + this->user = user; + } + #pragma Constructors + + + #pragma + Token TokenManager::requestToken() + { + Token token{}; + json usrObj; + + usrObj["username"] = user.username; + usrObj["password"] = user.password; + + auto r = cpr::Post(cpr::Url{""}, + cpr::Body{usrObj.dump()}, + cpr::Header{{"Content-Type", "application/json"}}); + + json res = json::parse(r.text); + token.accessToken = res["token"]; + token.tokenType = res["token_type"]; + + return token; + } + #pragma Functions +} diff --git a/src/Managers/TokenManager.h b/src/Managers/TokenManager.h new file mode 100644 index 0000000..b064881 --- /dev/null +++ b/src/Managers/TokenManager.h @@ -0,0 +1,20 @@ +#ifndef TOKENMANAGER_H_ +#define TOKENMANAGER_H_ + +#include"Models/Token.h" +#include"Models/User.h" + +namespace Managers +{ + class TokenManager + { + public: + TokenManager(const Models::User); + + Models::Token requestToken(); + private: + Models::User user; + }; +} + +#endif diff --git a/src/Managers/UserManager.cpp b/src/Managers/UserManager.cpp new file mode 100644 index 0000000..df87fbe --- /dev/null +++ b/src/Managers/UserManager.cpp @@ -0,0 +1,54 @@ +#include"UserManager.h" + +#include +#include +#include + +using std::string; +using std::vector; + +using Models::IcarusAction; +using Models::User; + +namespace Managers +{ + #pragma + UserManager::UserManager(User user) + { + this->user = user; + this->user = User{}; + } + UserManager::UserManager(const IcarusAction icaAct) + { + this->icaAction = icaAct; + this->user = User{}; + parseUserFromActions(); + } + #pragma Constructors + + + #pragma + User UserManager::retrieveUser() const + { + return user; + } + + void UserManager::parseUserFromActions() + { + auto args = icaAction.flags; + + for (auto arg : args) + { + auto flag = arg.flag; + if (flag.compare("-u") == 0) + { + user.username = arg.value; + } + if (flag.compare("-p") == 0) + { + user.password = arg.value; + } + } + } + #pragma Functions +} diff --git a/src/Managers/UserManager.h b/src/Managers/UserManager.h new file mode 100644 index 0000000..0d4fb44 --- /dev/null +++ b/src/Managers/UserManager.h @@ -0,0 +1,26 @@ +#ifndef USERMANAGER_H_ +#define USERMANAGER_H_ + +#include + +#include"Models/IcarusAction.h" +#include"Models/User.h" + +namespace Managers +{ + class UserManager + { + public: + UserManager(Models::User); + UserManager(const Models::IcarusAction); + + Models::User retrieveUser() const; + private: + void parseUserFromActions(); + + Models::User user; + Models::IcarusAction icaAction; + }; +} + +#endif diff --git a/src/Models/User.h b/src/Models/User.h index 326dc45..90b018b 100644 --- a/src/Models/User.h +++ b/src/Models/User.h @@ -9,7 +9,7 @@ namespace Models { std::string username; std::string password; - } + }; } #endif diff --git a/src/Syncers/Upload.cpp b/src/Syncers/Upload.cpp index 53d0b42..f7e41d3 100644 --- a/src/Syncers/Upload.cpp +++ b/src/Syncers/Upload.cpp @@ -1,4 +1,5 @@ #include +#include #include #include @@ -8,6 +9,7 @@ using std::cout; using std::endl; +using std::exception; using std::string; using json = nlohmann::json; @@ -37,8 +39,8 @@ namespace Syncers try { auto r = cpr::Post(cpr::Url{url}, - cpr::Multipart{{"key", "small value"}, - {"file", cpr::File{songPath}}}); + cpr::Multipart{{"key", "small value"}, + {"file", cpr::File{songPath}}}); cout << r.status_code<< std::endl; cout<<"Success"<