From 0e6ca31ed2eb75c82fc30e5c236c8c4682c571f3 Mon Sep 17 00:00:00 2001 From: amazing-username Date: Sat, 8 Jun 2019 00:09:26 -0400 Subject: [PATCH] Downloading functionality added #4 and #7 --- src/Managers/ActionManager.cpp | 2 +- src/Managers/CommitManager.cpp | 34 +++++++++++++++++-- src/Models/Song.h | 3 +- src/Syncers/Download.cpp | 61 ++++++++++++++++++++++++++++++++++ src/Syncers/Download.h | 5 +++ src/Syncers/SyncerBase.h | 3 ++ 6 files changed, 104 insertions(+), 4 deletions(-) diff --git a/src/Managers/ActionManager.cpp b/src/Managers/ActionManager.cpp index d1ba899..1be285d 100644 --- a/src/Managers/ActionManager.cpp +++ b/src/Managers/ActionManager.cpp @@ -73,7 +73,7 @@ namespace Managers { supportedFlags = vector{ "-u", "-p", "-t", "-h", "-s", - "-d", "-D" + "-d", "-D", "-b" }; } void ActionManager::validateAction() diff --git a/src/Managers/CommitManager.cpp b/src/Managers/CommitManager.cpp index 4709ed5..16fdf0a 100644 --- a/src/Managers/CommitManager.cpp +++ b/src/Managers/CommitManager.cpp @@ -6,6 +6,7 @@ #include"Models/Song.h" #include"Parsers/APIParser.h" #include"Syncers/Delete.h" +#include"Syncers/Download.h" #include"Syncers/Upload.h" #include"TokenManager.h" @@ -23,6 +24,7 @@ using Models::Song; using Parsers::APIParser; using Models::IcarusAction; using Syncers::Delete; +using Syncers::Download; using Syncers::Upload; namespace Managers @@ -49,7 +51,7 @@ namespace Managers case downloadAct: downloadSong(); break; - case retrieveAct: + case retrieveAct: // No plans to imeplement break; case uploadAct: uploadSong(); @@ -96,7 +98,35 @@ namespace Managers } void CommitManager::downloadSong() { - // TODO: Implement this functionality + cout<<"Starting downloading process..."< #include #include @@ -7,24 +8,31 @@ using std::cout; using std::endl; +using std::exception; using std::ofstream; using std::string; using Models::API; +using Models::Song; +using Models::Token; namespace Syncers { + #pragma Download::Download() { } Download::Download(API api) { this->api = api; + this->api.endpoint = "song/data"; } Download::Download(string filePath) { downloadFilePath = filePath; } + #pragma Constructors + #pragma void Download::downloadSong(const int id) { string urlRoot = "http://192.168.1.5"; @@ -45,4 +53,57 @@ namespace Syncers cout<songPath<data.length(); + const char *data = song->data.c_str(); + cout<<"buff length "<songPath, std::ios::binary}; + saveSong.write(data, bufferLength); + saveSong.close(); + } + #pragma Functions } diff --git a/src/Syncers/Download.h b/src/Syncers/Download.h index 1a097ca..aae0bfd 100644 --- a/src/Syncers/Download.h +++ b/src/Syncers/Download.h @@ -6,6 +6,7 @@ #include"Models/API.h" #include"Models/Song.h" +#include"Models/Token.h" #include"SyncerBase.h" @@ -19,8 +20,12 @@ namespace Syncers Download(std::string); void downloadSong(int); + void downloadSong(const Models::Token token, Models::Song); private: + std::string retrieveUrl(Models::Song); + std::string downloadFilePath; + void saveSong(Models::Song*); }; } diff --git a/src/Syncers/SyncerBase.h b/src/Syncers/SyncerBase.h index 4d0d983..78ae5f1 100644 --- a/src/Syncers/SyncerBase.h +++ b/src/Syncers/SyncerBase.h @@ -11,6 +11,9 @@ namespace Syncers { protected: Models::API api; + const int OK = 200; + const int UNAUTHORIZED = 401; + const int NOTFOUND = 404; }; }