Added feature to retrieve song records in json format. One issue is that the json file is in one line
This commit is contained in:
@@ -50,6 +50,7 @@ set(SOURCES
|
||||
src/Parsers/APIParser.cpp
|
||||
src/Syncers/Delete.cpp
|
||||
src/Syncers/Download.cpp
|
||||
src/Syncers/RetrieveRecords.cpp
|
||||
src/Syncers/Upload.cpp
|
||||
src/Utilities/Conversions.cpp
|
||||
)
|
||||
@@ -69,6 +70,7 @@ set(HEADERS
|
||||
include/Parsers/APIParser.h
|
||||
include/Syncers/Delete.h
|
||||
include/Syncers/Download.h
|
||||
include/Syncers/RetrieveRecords.h
|
||||
include/Syncers/SyncerBase.h
|
||||
include/Syncers/Upload.h
|
||||
include/Utilities/Conversions.h
|
||||
|
||||
@@ -16,12 +16,19 @@ namespace Managers
|
||||
CommitManager(Models::IcarusAction);
|
||||
|
||||
void commitAction();
|
||||
|
||||
enum RetrieveTypes
|
||||
{
|
||||
songs
|
||||
};
|
||||
|
||||
private:
|
||||
Models::Token parseToken(Models::API);
|
||||
|
||||
void initializeMapActions();
|
||||
void deleteSong();
|
||||
void downloadSong();
|
||||
void retrieveObjects();
|
||||
void uploadSong();
|
||||
|
||||
enum ActionValues
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
#ifndef RETRIEVERECORDS_H_
|
||||
#define RETRIEVERECORDS_H_
|
||||
|
||||
#include "Managers/CommitManager.h"
|
||||
#include "Models/API.h"
|
||||
#include "Models/Token.h"
|
||||
|
||||
namespace Syncers
|
||||
{
|
||||
class RetrieveRecords
|
||||
{
|
||||
public:
|
||||
RetrieveRecords();
|
||||
RetrieveRecords(Models::API, Models::Token);
|
||||
|
||||
void retrieve(Managers::CommitManager::RetrieveTypes);
|
||||
private:
|
||||
void fetchSongs();
|
||||
|
||||
Models::API api;
|
||||
Models::Token token;
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -74,7 +74,7 @@ namespace Managers
|
||||
{
|
||||
supportedFlags = vector<string>{
|
||||
"-u", "-p", "-t", "-h", "-s",
|
||||
"-d", "-D", "-b"
|
||||
"-d", "-D", "-b", "-rt"
|
||||
};
|
||||
}
|
||||
void ActionManager::validateAction()
|
||||
@@ -109,7 +109,7 @@ namespace Managers
|
||||
if (flag.size() > 3 || isNumber(flag))
|
||||
{
|
||||
flg.value = flag;
|
||||
//cout<<"flag value "<<flg.value<<endl;
|
||||
cout<<"flag value "<<flg.value<<endl;
|
||||
flags.push_back(flg);
|
||||
flg = Flags{};
|
||||
continue;
|
||||
@@ -121,7 +121,7 @@ namespace Managers
|
||||
return !val.compare(flag);
|
||||
}))
|
||||
{
|
||||
//cout<<"flag "<<flag<<endl;
|
||||
cout<<"flag "<<flag<<endl;
|
||||
flg.flag = flag;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include"Parsers/APIParser.h"
|
||||
#include"Syncers/Delete.h"
|
||||
#include"Syncers/Download.h"
|
||||
#include"Syncers/RetrieveRecords.h"
|
||||
#include"Syncers/Upload.h"
|
||||
|
||||
#include"Managers/TokenManager.h"
|
||||
@@ -27,6 +28,7 @@ using Parsers::APIParser;
|
||||
using Models::IcarusAction;
|
||||
using Syncers::Delete;
|
||||
using Syncers::Download;
|
||||
using Syncers::RetrieveRecords;
|
||||
using Syncers::Upload;
|
||||
|
||||
namespace Managers
|
||||
@@ -54,6 +56,7 @@ namespace Managers
|
||||
downloadSong();
|
||||
break;
|
||||
case retrieveAct: // No plans to imeplement
|
||||
retrieveObjects();
|
||||
break;
|
||||
case uploadAct:
|
||||
uploadSong();
|
||||
@@ -133,6 +136,35 @@ namespace Managers
|
||||
Download dnld{api};
|
||||
cout<<"downloading song"<<endl;
|
||||
dnld.downloadSong(token, song);
|
||||
}
|
||||
void CommitManager::retrieveObjects()
|
||||
{
|
||||
cout<<"Starting retrieve process..."<<endl;
|
||||
|
||||
APIParser apiPrs{icaAction};
|
||||
auto api = apiPrs.retrieveAPI();
|
||||
|
||||
auto token = parseToken(api);
|
||||
RetrieveTypes retrieveType;
|
||||
|
||||
for (auto arg : icaAction.flags)
|
||||
{
|
||||
auto flag = arg.flag;
|
||||
auto value = arg.value;
|
||||
|
||||
if (flag.compare("-rt") == 0)
|
||||
{
|
||||
if (value.compare("songs") == 0)
|
||||
{
|
||||
retrieveType = RetrieveTypes::songs;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RetrieveRecords songs{api, token};
|
||||
songs.retrieve(retrieveType);
|
||||
|
||||
}
|
||||
void CommitManager::uploadSong()
|
||||
{
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
#include "Syncers/RetrieveRecords.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
|
||||
#include <cpr/cpr.h>
|
||||
|
||||
using std::cout;
|
||||
using std::endl;
|
||||
using std::ofstream;
|
||||
|
||||
using Managers::CommitManager;
|
||||
using Models::API;
|
||||
using Models::Token;
|
||||
|
||||
namespace Syncers
|
||||
{
|
||||
|
||||
RetrieveRecords::RetrieveRecords() { }
|
||||
RetrieveRecords::RetrieveRecords(API api, Token token)
|
||||
: token(token), api(api) { }
|
||||
|
||||
void RetrieveRecords::retrieve(CommitManager::RetrieveTypes type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case CommitManager::RetrieveTypes::songs:
|
||||
fetchSongs();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
void RetrieveRecords::fetchSongs()
|
||||
{
|
||||
cout<<"fetching songs"<<endl;
|
||||
auto url = api.url + "api/" + api.version + "/" + "song";
|
||||
cout<<url<<endl;
|
||||
|
||||
auto auth = token.tokenType;
|
||||
auth.append(" " + token.accessToken);
|
||||
auto r = cpr::Get(cpr::Url{url},
|
||||
cpr::Header{{"authorization", auth},
|
||||
});
|
||||
|
||||
ofstream writeData{};
|
||||
writeData.open("songs.json");
|
||||
writeData<<r.text;
|
||||
writeData.close();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user