diff --git a/CMakeLists.txt b/CMakeLists.txt index ae722c7..3ba7f71 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,6 +43,7 @@ endif() set(SOURCES src/Main.cpp src/Managers/ActionManager.cpp + src/Managers/CommitManager.cpp src/Managers/FileManager.cpp src/Syncers/Download.cpp src/Syncers/Upload.cpp @@ -50,9 +51,14 @@ set(SOURCES ) set(HEADERS src/Managers/ActionManager.h + src/Managers/CommitManager.h src/Managers/FileManager.h + src/Models/Token.h + src/Models/Flags.h + src/Models/IcarusAction.h src/Models/Song.h src/Models/UploadForm.h + src/Models/User.h src/Syncers/Download.h src/Syncers/Upload.h src/Utilities/Conversions.h diff --git a/src/Main.cpp b/src/Main.cpp index 28c1fe1..f81a024 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -2,6 +2,7 @@ #include #include"Managers/ActionManager.h" +#include"Managers/CommitManager.h" using std::cin; using std::cout; @@ -9,20 +10,24 @@ using std::endl; using std::string; using Managers::ActionManager; +using Managers::CommitManager; string songPath{}; string newSongPath{}; int main(int argc, char** argv) { - if (argc <= 1) + if (argc < 2) { cout<<"No actions provided"< +#include +#include +#include + +using std::cout; +using std::endl; +using std::string; +using std::vector; + +using Models::Flags; +using Models::IcarusAction; namespace Managers { #pragma - ActionManager::ActionManager(char** param) + ActionManager::ActionManager(char **param) { - // TODO: Implement what to do - // wih the parameters + this->params = param; + + action = string{params[1]}; + transform(action.begin(), action.end(), + action.begin(), ::tolower); + + initialize(); } #pragma Constructors + + + #pragma + IcarusAction ActionManager::retrieveIcarusAction() const + { + auto icarusAction = IcarusAction{}; + icarusAction.flags = flags; + icarusAction.action = action; + + return icarusAction; + } + vector ActionManager::retrieveFlags() const + { + return flags; + } + + string ActionManager::retrieveAction() const + { + return action; + } + + void ActionManager::initialize() + { + initializeSupportedActions(); + validateAction(); + validateFlags(); + } + void ActionManager::initializeSupportedActions() + { + supportedActions = vector{ + "download", "delete", + "retrieve", "upload" + }; + } + void ActionManager::initializeSupportedFlags() + { + supportedFlags = vector{ + "-u", "-p", "-t", "-h", "-s", + "-d" + }; + } + void ActionManager::validateAction() + { + cout<<"Validating action"< 3) + { + flg.value = flag; + flags.push_back(flg); + flg = Flags{}; + continue; + } + cout<<"\nprovided flag: "< ActionManager::parsedFlags() + { + auto parsed = vector{}; + try + { + for (auto i = 2; true; ++i) + { + string val{*(params + i)}; + parsed.push_back(val); + } + } + catch (std::exception e) + { + auto msg = e.what(); + cout<<"This happend: "< flagVals) + { + if (flagVals.empty()) + { + printf("Flags and values are empty\n"); + } + else + { + printf("Printing flags and values..\n"); + for (auto flgVal : flagVals) + { + cout< +#include + +#include"Models/Flags.h" +#include"Models/IcarusAction.h" + namespace Managers { class ActionManager { public: ActionManager(char**); + + Models::IcarusAction retrieveIcarusAction() const; + std::vector retrieveFlags() const; + std::string retrieveAction() const; private: + void initialize(); + void initializeSupportedActions(); + void initializeSupportedFlags(); + void validateAction(); + void validateFlags(); + + std::vector parsedFlags(); + + void printAction(); + void printFlags(std::vector); + void printFlags(); + + std::string action; + std::vector supportedActions; + std::vector supportedFlags; + std::vector flags; + char **params; }; } diff --git a/src/Managers/CommitManager.cpp b/src/Managers/CommitManager.cpp new file mode 100644 index 0000000..10b0714 --- /dev/null +++ b/src/Managers/CommitManager.cpp @@ -0,0 +1,63 @@ +#include"CommitManager.h" + +#include + +using std::cout; +using std::endl; +using std::map; +using std::string; + +using Models::IcarusAction; + +namespace Managers +{ + #pragma + CommitManager::CommitManager(IcarusAction icaAct) + { + icaAction = icaAct; + initializeMapActions(); + } + #pragma Constructors; + + + #pragma + void CommitManager::commitAction() + { + auto action = icaAction.action; + cout<<"Commitning "<{ + {"delete", deleteAct}, {"download", downloadAct}, + {"retrieve", retrieveAct}, + {"upload", uploadAct} + }; + } + void CommitManager::uploadSong() + { + cout<<"Uploading song..."< +#include + +#include"Models/IcarusAction.h" + +namespace Managers +{ + class CommitManager + { + public: + CommitManager(Models::IcarusAction); + + void commitAction(); + private: + void initializeMapActions(); + void uploadSong(); + + enum ActionValues + { + deleteAct, + downloadAct, + retrieveAct, + uploadAct + }; + std::map mapActions; + Models::IcarusAction icaAction; + }; +} + +#endif diff --git a/src/Models/Flags.h b/src/Models/Flags.h new file mode 100644 index 0000000..67b1aec --- /dev/null +++ b/src/Models/Flags.h @@ -0,0 +1,15 @@ +#ifndef FLAGS_H_ +#define FLAGS_H_ + +#include + +namespace Models +{ + struct Flags + { + std::string flag; + std::string value; + }; +} + +#endif diff --git a/src/Models/IcarusAction.h b/src/Models/IcarusAction.h new file mode 100644 index 0000000..539adac --- /dev/null +++ b/src/Models/IcarusAction.h @@ -0,0 +1,18 @@ +#ifndef ICARUSACTION_H_ +#define ICARUSACTION_H_ + +#include +#include + +#include"Flags.h" + +namespace Models +{ + struct IcarusAction + { + std::string action; + std::vector flags; + }; +} + +#endif diff --git a/src/Models/Song.h b/src/Models/Song.h index 72e55a0..3571157 100644 --- a/src/Models/Song.h +++ b/src/Models/Song.h @@ -16,6 +16,7 @@ namespace Models int year; int duration; char* songData; + std::string songPath; }; } diff --git a/src/Models/Token.h b/src/Models/Token.h new file mode 100644 index 0000000..de55025 --- /dev/null +++ b/src/Models/Token.h @@ -0,0 +1,17 @@ +#ifndef TOKEN_H_ +#define TOKEN_H_ + +#include + +namespace Models +{ + struct Token + { + std::string accessToken; + std::string tokenType; + int expiration; + + }; +} + +#endif diff --git a/src/Models/User.h b/src/Models/User.h new file mode 100644 index 0000000..326dc45 --- /dev/null +++ b/src/Models/User.h @@ -0,0 +1,15 @@ +#ifndef USER_H_ +#define USER_H_ + +#include + +namespace Models +{ + struct User + { + std::string username; + std::string password; + } +} + +#endif