-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapi_manager.cpp
More file actions
140 lines (118 loc) · 4.56 KB
/
Copy pathapi_manager.cpp
File metadata and controls
140 lines (118 loc) · 4.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include "api_manager.h"
#include <QMessageBox>
const QString kBaseUrl = "http://api.icndb.com/";
const QString kanbanUrl = "http://kanbanize.com/index.php/api/kanbanize/get_projects_and_boards/format/json";
const QString kanbanUrlTasks = "http://kanbanize.com/index.php/api/kanbanize/get_all_tasks/boardid/2/format/json";
const QString kanbanUrlColumnas = "http://kanbanize.com/index.php/api/kanbanize/get_board_structure/boardid/2/format/json";
const QString kanbanUrlLogin = "http://kanbanize.com/index.php/api/kanbanize/login/email/msalguero_2%40hotmail.com/pass/estructuradedatos/format/json";
const QString test = "http://date.jsontest.com";
API_Manager::API_Manager()
{
object = new QJsonObject();
array = new QJsonArray();
connect(&m_nam, SIGNAL(finished(QNetworkReply*)),
this, SLOT(parseNetworkResponse(QNetworkReply*)));
connect(this, SIGNAL(apiReady(QByteArray)), this, SLOT(recieveAPI(QByteArray)));
}
Lista<Board*>* API_Manager::getFullStructure(Lista<Board *> **boards)
{
(*boards)->Anula();
QEventLoop pause;
connect(&m_nam, SIGNAL(finished(QNetworkReply*)), &pause, SLOT(quit()));
getBoards();
pause.exec();
QJsonArray ProjectArray = (*object)["projects"].toArray();
if(ProjectArray.isEmpty())
exit(0);
QJsonObject project = ProjectArray[0].toObject();
QJsonArray boardArray = project["boards"].toArray();
for (int i = 0; i < boardArray.size(); ++i)
{
QJsonObject boardObject = boardArray[i].toObject();
Board* b = new Board(boardObject["name"].toString());
QEventLoop pause;
connect(&m_nam, SIGNAL(finished(QNetworkReply*)), &pause, SLOT(quit()));
getColumns(boardObject["id"].toString());
pause.exec();
QJsonObject *j = object;
QEventLoop pause2;
connect(&m_nam, SIGNAL(finished(QNetworkReply*)), &pause2, SLOT(quit()));
getTasks(boardObject["id"].toString());
pause2.exec();
QJsonArray *a = array;
b->readKanban(*j, *a);
(*boards)->Agregar(b);
}
return *boards;
}
void API_Manager::getRequest( const QString &urlString )
{
QUrl url ( urlString );
QNetworkRequest req ( url );
req.setHeader( QNetworkRequest::ContentTypeHeader, "apikey" );
req.setRawHeader("apikey", apikey.toUtf8());
QByteArray postData;
m_nam.post(req, postData);
}
void API_Manager::parseNetworkResponse( QNetworkReply *finished )
{
if ( finished->error() != QNetworkReply::NoError )
{
QMessageBox::about(NULL, "Lo sentimos", "Contraseña o usuario no valido");
// A communication error has occurred
emit networkError( finished->error() );
return;
}
// QNetworkReply is a QIODevice. So we read from it just like it was a file
QByteArray data = finished->readAll();
emit apiReady( data );
}
void API_Manager::login(QString email, QString pass)
{
//email = "msalguero_2%40hotmail.com";
//pass = "estructuradedatos";
email.replace("@", "%40");
qDebug()<<email<<" "<<pass;
const QString kanbanUrlLogin = "http://kanbanize.com/index.php/api/kanbanize/login/email/"+email+"/pass/"+pass+"/format/json";
qDebug()<<kanbanUrlLogin;
QEventLoop pause;
connect(&m_nam, SIGNAL(finished(QNetworkReply*)), &pause, SLOT(quit()));
getRequest(kanbanUrlLogin);
pause.exec();
}
void API_Manager::recieveAPI(const QByteArray &apiAsJSON)
{
QJsonDocument json( QJsonDocument::fromJson(apiAsJSON));
QFile saveFile(QStringLiteral("save2.json"));
if (!saveFile.open(QIODevice::WriteOnly)) {
qWarning("Couldn't open save file.");
return ;
}
saveFile.write(json.toJson());
if(json.isArray())
{
QJsonArray *a = new QJsonArray(json.array());
array = a;
}else
{
QJsonObject *j = new QJsonObject(json.object());
if(j->contains("apikey"))
apikey = (*j)["apikey"].toString();
object = (j);
}
}
void API_Manager::getBoards()
{
const QString kanbanUrl = "http://kanbanize.com/index.php/api/kanbanize/get_projects_and_boards/format/json";
getRequest(kanbanUrl);
}
void API_Manager::getColumns(QString id)
{
const QString kanbanUrlColumnas = "http://kanbanize.com/index.php/api/kanbanize/get_board_structure/boardid/"+id+"/format/json";
getRequest(kanbanUrlColumnas);
}
void API_Manager::getTasks(QString columnId)
{
const QString kanbanUrlTasks = "http://kanbanize.com/index.php/api/kanbanize/get_all_tasks/boardid/"+columnId+"/format/json";
getRequest(kanbanUrlTasks);
}