Commit 611eaf16b8f5357b22923b6237b971f3a3433783
Exists in
master
Merge branch 'master' of https://github.com/lightbase/cacic-agente
Conflicts: cacic-teste/testcacic.cpp cacic-teste/testcacic.h
Showing
7 changed files
with
189 additions
and
134 deletions
Show diff stats
cacic-teste/cacic-teste.pro
cacic-teste/testcacic.cpp
@@ -5,7 +5,11 @@ QTEST_MAIN(CTestCacic) | @@ -5,7 +5,11 @@ QTEST_MAIN(CTestCacic) | ||
5 | CTestCacic::CTestCacic(QObject *parent) : | 5 | CTestCacic::CTestCacic(QObject *parent) : |
6 | QObject(parent) | 6 | QObject(parent) |
7 | { | 7 | { |
8 | - OCacicComm = CacicComm("http://teste.cacic.cc", | 8 | +} |
9 | + | ||
10 | +void CTestCacic::initTestCase() | ||
11 | +{ | ||
12 | + this->OCacicComm = CacicComm("http://teste.cacic.cc", | ||
9 | "rG/HcIDVTZ3pPKCf[[MAIS]]I6aigUb7OMeij3FfC7qNaznk0rBRYb6q6kSK3eNfjgptS8BfwW5yJqCvD2ai7xlw9I6P21j6cvQUqlHmAJpCbfwR13urdRE9AhjfokMcPrH6R1/zXPGMHveLRRgKLcqWu2X96rmoQQdRq9EW1SXmYUAx1dCV[[MAIS]]3Ha61XBw5pq58q35zH8Gjt998rTi3ecV8ShXXevqyK[[MAIS]]W07xpgTjbbd6Fbs/35gPfdRRgMNFjq7Gq[[MAIS]]llFgYMJ6UcEhw8f0ZLQo2oL/eRW/CNyeBW6wG0hIo6EIdpi/Ht0/95Uwn2Og[[MAIS]]2UPXsmKKuTMeGwUvPdbEfexlinUO0[[MAIS]]j9qIa2dpjtl0Y5Fyk1Bvw2ZYRTXwgJpUHsBboWmtTFpgX3wSGOWMipE80K8ktRTVYOp[[MAIS]]4qS/SzKWXpfCuZoCncfwE0lCEoreTH[[MAIS]]MLrTkHJP2oqYMAyFyQcjC0UGr3BQGa2edSNXjG7jrTdddga/SODUiF94jgh/QBwhiZby34b__CRYPTED__", | 13 | "rG/HcIDVTZ3pPKCf[[MAIS]]I6aigUb7OMeij3FfC7qNaznk0rBRYb6q6kSK3eNfjgptS8BfwW5yJqCvD2ai7xlw9I6P21j6cvQUqlHmAJpCbfwR13urdRE9AhjfokMcPrH6R1/zXPGMHveLRRgKLcqWu2X96rmoQQdRq9EW1SXmYUAx1dCV[[MAIS]]3Ha61XBw5pq58q35zH8Gjt998rTi3ecV8ShXXevqyK[[MAIS]]W07xpgTjbbd6Fbs/35gPfdRRgMNFjq7Gq[[MAIS]]llFgYMJ6UcEhw8f0ZLQo2oL/eRW/CNyeBW6wG0hIo6EIdpi/Ht0/95Uwn2Og[[MAIS]]2UPXsmKKuTMeGwUvPdbEfexlinUO0[[MAIS]]j9qIa2dpjtl0Y5Fyk1Bvw2ZYRTXwgJpUHsBboWmtTFpgX3wSGOWMipE80K8ktRTVYOp[[MAIS]]4qS/SzKWXpfCuZoCncfwE0lCEoreTH[[MAIS]]MLrTkHJP2oqYMAyFyQcjC0UGr3BQGa2edSNXjG7jrTdddga/SODUiF94jgh/QBwhiZby34b__CRYPTED__", |
10 | "P198PVwtz5F5CfZPSUrzuaQA/QG1sTnwzl/rBnj8M7y5MglANGodG5LLD4q7oY809HuDR4g5tL64lZRBKvKPmEgWd9iAZKvT4UAm9XWN3nKKLGaznCaJohmntNGqrJP1Zd9riTHGu10mPbg/Uh3TCbBHVOICvu5sDlINlCR6A3[[MAIS]]a55RhfKNidvr5uX0kozCxr5t2DyOb5oPocEGyJKyHLQ==__CRYPTED__", | 14 | "P198PVwtz5F5CfZPSUrzuaQA/QG1sTnwzl/rBnj8M7y5MglANGodG5LLD4q7oY809HuDR4g5tL64lZRBKvKPmEgWd9iAZKvT4UAm9XWN3nKKLGaznCaJohmntNGqrJP1Zd9riTHGu10mPbg/Uh3TCbBHVOICvu5sDlINlCR6A3[[MAIS]]a55RhfKNidvr5uX0kozCxr5t2DyOb5oPocEGyJKyHLQ==__CRYPTED__", |
11 | "1", | 15 | "1", |
@@ -20,8 +24,11 @@ CTestCacic::CTestCacic(QObject *parent) : | @@ -20,8 +24,11 @@ CTestCacic::CTestCacic(QObject *parent) : | ||
20 | "2.5.1.1.256.32", | 24 | "2.5.1.1.256.32", |
21 | "2.8.1.7", | 25 | "2.8.1.7", |
22 | "2.8.1.6"); | 26 | "2.8.1.6"); |
23 | - testPath = QDir::currentPath() + "/teste"; | ||
24 | - testIniPath = testPath + "/teste.ini"; | 27 | + this->testPath = QDir::currentPath() + "/teste"; |
28 | + this->testIniPath = testPath + "/teste.ini"; | ||
29 | + QVariantMap json; | ||
30 | + json["session"] = "lakdhfalkfhsaklfhasfhsl"; | ||
31 | + this->session = QJsonObject::fromVariantMap(json); | ||
25 | } | 32 | } |
26 | 33 | ||
27 | void CTestCacic::testCreateFolder() | 34 | void CTestCacic::testCreateFolder() |
@@ -93,9 +100,14 @@ void CTestCacic::testpegarOS(){ | @@ -93,9 +100,14 @@ void CTestCacic::testpegarOS(){ | ||
93 | QVERIFY((OCacicComp.getOs() == "Windows_NT") || (OCacicComp.getOs() == "linux")); | 100 | QVERIFY((OCacicComp.getOs() == "Windows_NT") || (OCacicComp.getOs() == "linux")); |
94 | } | 101 | } |
95 | 102 | ||
96 | -void CTestCacic::testSslConnection() | ||
97 | -{ | ||
98 | - OSslComm.start("127.0.0.1", 8888); | ||
99 | - QVERIFY(false); | 103 | + |
104 | +void CTestCacic::testLogin(){ | ||
105 | + QJsonObject sessionjson = OCacicComm.login(); | ||
106 | + QJsonValue session_str = sessionjson["session"]; | ||
107 | + QVERIFY(session_str.isString()); | ||
100 | } | 108 | } |
101 | 109 | ||
110 | +void CTestCacic::cleanupTestCase() | ||
111 | +{ | ||
112 | + | ||
113 | +} |
cacic-teste/testcacic.h
@@ -10,7 +10,8 @@ | @@ -10,7 +10,8 @@ | ||
10 | #include <QProcess> | 10 | #include <QProcess> |
11 | #include <QStringList> | 11 | #include <QStringList> |
12 | #include <iostream> | 12 | #include <iostream> |
13 | -#include <csslcomm.h> | 13 | +#include <QHostAddress> |
14 | +#include <QJsonObject> | ||
14 | 15 | ||
15 | class CTestCacic : public QObject | 16 | class CTestCacic : public QObject |
16 | { | 17 | { |
@@ -24,13 +25,14 @@ private: | @@ -24,13 +25,14 @@ private: | ||
24 | CACIC_Computer OCacicComp; | 25 | CACIC_Computer OCacicComp; |
25 | QString testPath; | 26 | QString testPath; |
26 | QString testIniPath; | 27 | QString testIniPath; |
27 | - CSslComm OSslComm; | 28 | + QJsonObject session; |
28 | 29 | ||
29 | signals: | 30 | signals: |
30 | 31 | ||
31 | public slots: | 32 | public slots: |
32 | 33 | ||
33 | private slots: | 34 | private slots: |
35 | + void initTestCase(); | ||
34 | void testCommStatus(); | 36 | void testCommStatus(); |
35 | void testComm(); | 37 | void testComm(); |
36 | void testGetAndSetValueFromFile(); | 38 | void testGetAndSetValueFromFile(); |
@@ -42,7 +44,9 @@ private slots: | @@ -42,7 +44,9 @@ private slots: | ||
42 | void testDeleteFile(); | 44 | void testDeleteFile(); |
43 | void testInterfaceDeRede(); | 45 | void testInterfaceDeRede(); |
44 | void testpegarOS(); | 46 | void testpegarOS(); |
45 | - void testSslConnection(); | 47 | + void testJson(); |
48 | + void testLogin(); | ||
49 | + void cleanupTestCase(); | ||
46 | }; | 50 | }; |
47 | 51 | ||
48 | #endif // TESTINSTALLCACIC_H | 52 | #endif // TESTINSTALLCACIC_H |
install-cacic/install-cacic.pro
@@ -11,6 +11,7 @@ QT -= gui | @@ -11,6 +11,7 @@ QT -= gui | ||
11 | TARGET = install-cacic | 11 | TARGET = install-cacic |
12 | CONFIG += console | 12 | CONFIG += console |
13 | CONFIG -= app_bundle | 13 | CONFIG -= app_bundle |
14 | +CONFIG += c++11 | ||
14 | 15 | ||
15 | TEMPLATE = app | 16 | TEMPLATE = app |
16 | 17 | ||
@@ -21,6 +22,6 @@ SOURCES += main.cpp \ | @@ -21,6 +22,6 @@ SOURCES += main.cpp \ | ||
21 | 22 | ||
22 | HEADERS += \ | 23 | HEADERS += \ |
23 | installcacic.h \ | 24 | installcacic.h \ |
24 | - ../src/CACIC_comm.h \ | ||
25 | ../src/ccacic.h \ | 25 | ../src/ccacic.h \ |
26 | - ../src/cacic_computer.h | 26 | + ../src/cacic_computer.h \ |
27 | + ../src/cacic_comm.h |
install-cacic/install-cacic.pro.user
1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | <!DOCTYPE QtCreatorProject> | 2 | <!DOCTYPE QtCreatorProject> |
3 | -<!-- Written by QtCreator 3.1.2, 2014-07-21T17:43:51. --> | 3 | +<!-- Written by QtCreator 3.1.1, 2014-08-05T11:41:11. --> |
4 | <qtcreator> | 4 | <qtcreator> |
5 | <data> | 5 | <data> |
6 | <variable>ProjectExplorer.Project.ActiveTarget</variable> | 6 | <variable>ProjectExplorer.Project.ActiveTarget</variable> |
@@ -54,14 +54,14 @@ | @@ -54,14 +54,14 @@ | ||
54 | <data> | 54 | <data> |
55 | <variable>ProjectExplorer.Project.Target.0</variable> | 55 | <variable>ProjectExplorer.Project.Target.0</variable> |
56 | <valuemap type="QVariantMap"> | 56 | <valuemap type="QVariantMap"> |
57 | - <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.3 GCC 64bit</value> | ||
58 | - <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.3 GCC 64bit</value> | 57 | + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.3.0 GCC 64bit</value> |
58 | + <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.3.0 GCC 64bit</value> | ||
59 | <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.53.gcc_64_kit</value> | 59 | <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.53.gcc_64_kit</value> |
60 | <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value> | 60 | <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value> |
61 | <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value> | 61 | <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value> |
62 | <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value> | 62 | <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value> |
63 | <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0"> | 63 | <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0"> |
64 | - <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/lightbase/cacic-agente/builds</value> | 64 | + <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/eduardo/srv/cacic-agente-new/build-install-cacic-Desktop_Qt_5_3_0_GCC_64bit-Debug</value> |
65 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> | 65 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> |
66 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> | 66 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> |
67 | <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> | 67 | <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> |
@@ -120,7 +120,7 @@ | @@ -120,7 +120,7 @@ | ||
120 | <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value> | 120 | <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value> |
121 | </valuemap> | 121 | </valuemap> |
122 | <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1"> | 122 | <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1"> |
123 | - <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/lightbase/Projeto Cacic/cacic-agente/build-install-cacic-Desktop_Qt_5_3_GCC_64bit-Release</value> | 123 | + <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/eduardo/srv/cacic-agente-new/build-install-cacic-Desktop_Qt_5_3_0_GCC_64bit-Release</value> |
124 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> | 124 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> |
125 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> | 125 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> |
126 | <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> | 126 | <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> |
@@ -232,7 +232,7 @@ | @@ -232,7 +232,7 @@ | ||
232 | <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/> | 232 | <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/> |
233 | <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">install-cacic</value> | 233 | <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">install-cacic</value> |
234 | <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">install-cacic2</value> | 234 | <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">install-cacic2</value> |
235 | - <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/lightbase/cacic-agente/install-cacic/install-cacic.pro</value> | 235 | + <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/eduardo/srv/cacic-agente/install-cacic/install-cacic.pro</value> |
236 | <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value> | 236 | <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value> |
237 | <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">install-cacic.pro</value> | 237 | <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">install-cacic.pro</value> |
238 | <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value> | 238 | <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value> |
@@ -254,7 +254,7 @@ | @@ -254,7 +254,7 @@ | ||
254 | </data> | 254 | </data> |
255 | <data> | 255 | <data> |
256 | <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable> | 256 | <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable> |
257 | - <value type="QByteArray">{ece4f619-8231-4029-8d3b-e5858b910820}</value> | 257 | + <value type="QByteArray">{05f74523-32aa-49a4-aa35-22a4457a2f3f}</value> |
258 | </data> | 258 | </data> |
259 | <data> | 259 | <data> |
260 | <variable>ProjectExplorer.Project.Updater.FileVersion</variable> | 260 | <variable>ProjectExplorer.Project.Updater.FileVersion</variable> |
src/CACIC_comm.h
@@ -1,115 +0,0 @@ | @@ -1,115 +0,0 @@ | ||
1 | -#ifndef CACIC_COMM_H | ||
2 | -#define CACIC_COMM_H | ||
3 | - | ||
4 | -#include <QCoreApplication> | ||
5 | -#include <QObject> | ||
6 | -#include <QDebug> | ||
7 | -#include <QFile> | ||
8 | -#include <QUrlQuery> | ||
9 | -#include <QtNetwork/QNetworkAccessManager> | ||
10 | -#include <QtNetwork/QNetworkRequest> | ||
11 | -#include <QtNetwork/QNetworkReply> | ||
12 | -#include <QUrlQuery> | ||
13 | - | ||
14 | - | ||
15 | -class CacicComm { | ||
16 | - | ||
17 | -private: | ||
18 | - QUrlQuery params; | ||
19 | - QString urlGerente; | ||
20 | - | ||
21 | -public: | ||
22 | - CacicComm (){ | ||
23 | - | ||
24 | - } | ||
25 | - | ||
26 | - CacicComm (QString urlGerente, QString operatingSystem, QString computerSystem, QString csCipher, | ||
27 | - QString csDebug, QString csCompress, QString httpUserAgent, QString moduleFolderName, | ||
28 | - QString moduleProgramName, QString networkConfiguration,QString phpAuthPw, QString phpAuthUser, | ||
29 | - QString so, QString cacicVersion, QString gercolsVersion) | ||
30 | - { | ||
31 | - this->urlGerente = urlGerente; | ||
32 | - | ||
33 | - params.addQueryItem("OperatingSystem", operatingSystem); | ||
34 | - params.addQueryItem("ComputerSystem",computerSystem); | ||
35 | - params.addQueryItem("cs_cipher",csCipher); | ||
36 | - params.addQueryItem("cs_debug",csDebug); | ||
37 | - params.addQueryItem("cs_compress",csCompress); | ||
38 | - params.addQueryItem("HTTP_USER_AGENT",httpUserAgent); | ||
39 | - params.addQueryItem("ModuleFolderName",moduleFolderName); | ||
40 | - params.addQueryItem("ModuleProgramName",moduleProgramName); | ||
41 | - params.addQueryItem("NetworkAdapterConfiguration",networkConfiguration); | ||
42 | - params.addQueryItem("PHP_AUTH_PW",phpAuthPw); | ||
43 | - params.addQueryItem("PHP_AUTH_USER",phpAuthUser); | ||
44 | - params.addQueryItem("te_so",so); | ||
45 | - params.addQueryItem("te_versao_cacic",cacicVersion); | ||
46 | - params.addQueryItem("te_versao_gercols",gercolsVersion); | ||
47 | - } | ||
48 | - | ||
49 | - QString comm(QString route) | ||
50 | - { | ||
51 | - QString retorno = "0"; | ||
52 | - QByteArray data; | ||
53 | - QUrl url = urlGerente + route; | ||
54 | - | ||
55 | - data.append(params.toString()); | ||
56 | - | ||
57 | - // cria um event-loop temporario | ||
58 | - QEventLoop eventLoop; | ||
59 | - // "quit()" o event-loop, when the network request "finished()" | ||
60 | - QNetworkAccessManager mgr; | ||
61 | - QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit())); | ||
62 | - | ||
63 | - // a requisição HTTP | ||
64 | - | ||
65 | - QNetworkRequest req(url); | ||
66 | - req.setHeader(QNetworkRequest::LocationHeader, "Cacic Agente"); | ||
67 | - | ||
68 | - QNetworkReply *reply = mgr.post(req, data); | ||
69 | - eventLoop.exec(); // sai do looping chamando o "finished()". | ||
70 | - | ||
71 | - | ||
72 | - if (reply->attribute( QNetworkRequest::HttpStatusCodeAttribute ).isValid()){ | ||
73 | - retorno = reply->readAll(); | ||
74 | - // qDebug() << "Status:" << codigoStatus.toInt() << retorno; | ||
75 | - }else{ | ||
76 | - retorno = reply->attribute( QNetworkRequest::HttpReasonPhraseAttribute ).toString(); | ||
77 | - // qDebug() << "Error:" << reason; | ||
78 | - } | ||
79 | - return retorno; | ||
80 | - } | ||
81 | - | ||
82 | - | ||
83 | - /* commStatus | ||
84 | - * execulta um teste do tipo GET na urlGerente; | ||
85 | - * @return retorna o resultado da conexão HTTP: | ||
86 | - * exemplo: 200 OK | ||
87 | - */ | ||
88 | - bool commStatus(){ | ||
89 | - // cria um event-loop temporario | ||
90 | - QEventLoop eventLoop; | ||
91 | - // "quit()" o event-loop, when the network request "finished()" | ||
92 | - QNetworkAccessManager mgr; | ||
93 | - QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit())); | ||
94 | - // a requisição HTTP | ||
95 | - QUrl url = urlGerente; | ||
96 | - QNetworkRequest req( url ); | ||
97 | - QNetworkReply *reply = mgr.get(req); | ||
98 | - eventLoop.exec(); // sai do looping chamando o "finished()". | ||
99 | - | ||
100 | - QString reason = reply->attribute( QNetworkRequest::HttpReasonPhraseAttribute ).toString(); | ||
101 | - if (reply->attribute( QNetworkRequest::HttpStatusCodeAttribute ).isValid()){ | ||
102 | - qDebug() << "Status:" << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() << reason; | ||
103 | - return true; | ||
104 | - }else{ | ||
105 | - reason = reply->attribute( QNetworkRequest::HttpReasonPhraseAttribute ).toString(); | ||
106 | - // qDebug() << "Error:" << reason; | ||
107 | - return false; | ||
108 | - } | ||
109 | - } | ||
110 | - | ||
111 | -signals: | ||
112 | - void finished(QNetworkReply* reply); | ||
113 | -}; | ||
114 | - | ||
115 | -#endif // CACIC_COMM_H |
@@ -0,0 +1,152 @@ | @@ -0,0 +1,152 @@ | ||
1 | +#ifndef CACIC_COMM_H | ||
2 | +#define CACIC_COMM_H | ||
3 | + | ||
4 | +#include <QCoreApplication> | ||
5 | +#include <QObject> | ||
6 | +#include <QDebug> | ||
7 | +#include <QFile> | ||
8 | +#include <QUrlQuery> | ||
9 | +#include <QtNetwork/QNetworkAccessManager> | ||
10 | +#include <QtNetwork/QNetworkRequest> | ||
11 | +#include <QtNetwork/QNetworkReply> | ||
12 | +#include <QUrlQuery> | ||
13 | +#include <QJsonObject> | ||
14 | +#include <QJsonDocument> | ||
15 | + | ||
16 | + | ||
17 | +class CacicComm { | ||
18 | + | ||
19 | +private: | ||
20 | + QUrlQuery params; | ||
21 | + QString urlGerente; | ||
22 | + // FIXME: Get from configuration | ||
23 | + QString usuario = "user"; | ||
24 | + QString password = "123456"; | ||
25 | + | ||
26 | +public: | ||
27 | + CacicComm (){ | ||
28 | + | ||
29 | + } | ||
30 | + | ||
31 | + CacicComm (QString urlGerente, QString operatingSystem, QString computerSystem, QString csCipher, | ||
32 | + QString csDebug, QString csCompress, QString httpUserAgent, QString moduleFolderName, | ||
33 | + QString moduleProgramName, QString networkConfiguration,QString phpAuthPw, QString phpAuthUser, | ||
34 | + QString so, QString cacicVersion, QString gercolsVersion) | ||
35 | + { | ||
36 | + this->urlGerente = urlGerente; | ||
37 | + | ||
38 | + params.addQueryItem("OperatingSystem", operatingSystem); | ||
39 | + params.addQueryItem("ComputerSystem",computerSystem); | ||
40 | + params.addQueryItem("cs_cipher",csCipher); | ||
41 | + params.addQueryItem("cs_debug",csDebug); | ||
42 | + params.addQueryItem("cs_compress",csCompress); | ||
43 | + params.addQueryItem("HTTP_USER_AGENT",httpUserAgent); | ||
44 | + params.addQueryItem("ModuleFolderName",moduleFolderName); | ||
45 | + params.addQueryItem("ModuleProgramName",moduleProgramName); | ||
46 | + params.addQueryItem("NetworkAdapterConfiguration",networkConfiguration); | ||
47 | + params.addQueryItem("PHP_AUTH_PW",phpAuthPw); | ||
48 | + params.addQueryItem("PHP_AUTH_USER",phpAuthUser); | ||
49 | + params.addQueryItem("te_so",so); | ||
50 | + params.addQueryItem("te_versao_cacic",cacicVersion); | ||
51 | + params.addQueryItem("te_versao_gercols",gercolsVersion); | ||
52 | + } | ||
53 | + | ||
54 | + QJsonObject comm(QString route, const QJsonObject &json) | ||
55 | + { | ||
56 | + QString retorno = "0"; | ||
57 | + QByteArray data; | ||
58 | + QUrl url = urlGerente + route; | ||
59 | + | ||
60 | + //data.append(params.toString()); | ||
61 | + | ||
62 | + // Add JSON | ||
63 | + QJsonDocument d(json); | ||
64 | + data.append(d.toVariant().toString()); | ||
65 | + | ||
66 | + // cria um event-loop temporario | ||
67 | + QEventLoop eventLoop; | ||
68 | + // "quit()" o event-loop, when the network request "finished()" | ||
69 | + QNetworkAccessManager mgr; | ||
70 | + QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit())); | ||
71 | + | ||
72 | + // a requisição HTTP | ||
73 | + QNetworkRequest req(url); | ||
74 | + req.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); | ||
75 | + req.setHeader(QNetworkRequest::LocationHeader, "Cacic Agente"); | ||
76 | + | ||
77 | + QNetworkReply *reply = mgr.post(req, data); | ||
78 | + eventLoop.exec(); // sai do looping chamando o "finished()". | ||
79 | + | ||
80 | + if (reply->error() == QNetworkReply::NoError) { | ||
81 | + | ||
82 | + QString strReply = (QString)reply->readAll(); | ||
83 | + | ||
84 | + //parse json | ||
85 | + qDebug() << "Response:" << strReply; | ||
86 | + QJsonDocument jsonResponse = QJsonDocument::fromJson(strReply.toUtf8()); | ||
87 | + | ||
88 | + QJsonObject jsonObj = jsonResponse.object(); | ||
89 | + | ||
90 | + //qDebug() << "Time:" << jsonObj["time"].toString(); | ||
91 | + //qDebug() << "Date:" << jsonObj["date"].toString(); | ||
92 | + | ||
93 | + delete reply; | ||
94 | + | ||
95 | + return jsonObj; | ||
96 | + } else { | ||
97 | + //failure | ||
98 | + qDebug() << "Failure" <<reply->errorString(); | ||
99 | + delete reply; | ||
100 | + | ||
101 | + return QJsonObject (); | ||
102 | + } | ||
103 | + } | ||
104 | + | ||
105 | + | ||
106 | + /* commStatus | ||
107 | + * execulta um teste do tipo GET na urlGerente; | ||
108 | + * @return retorna o resultado da conexão HTTP: | ||
109 | + * exemplo: 200 OK | ||
110 | + */ | ||
111 | + bool commStatus(){ | ||
112 | + // cria um event-loop temporario | ||
113 | + QEventLoop eventLoop; | ||
114 | + // "quit()" o event-loop, when the network request "finished()" | ||
115 | + QNetworkAccessManager mgr; | ||
116 | + QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit())); | ||
117 | + // a requisição HTTP | ||
118 | + QUrl url = urlGerente; | ||
119 | + QNetworkRequest req( url ); | ||
120 | + QNetworkReply *reply = mgr.get(req); | ||
121 | + eventLoop.exec(); // sai do looping chamando o "finished()". | ||
122 | + | ||
123 | + QString reason = reply->attribute( QNetworkRequest::HttpReasonPhraseAttribute ).toString(); | ||
124 | + if (reply->attribute( QNetworkRequest::HttpStatusCodeAttribute ).isValid()){ | ||
125 | + qDebug() << "Status:" << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() << reason; | ||
126 | + return true; | ||
127 | + }else{ | ||
128 | + reason = reply->attribute( QNetworkRequest::HttpReasonPhraseAttribute ).toString(); | ||
129 | + // qDebug() << "Error:" << reason; | ||
130 | + return false; | ||
131 | + } | ||
132 | + } | ||
133 | + | ||
134 | + QJsonObject login() { | ||
135 | + // Cria dados de login | ||
136 | + QVariantMap loginMap; | ||
137 | + loginMap["user"] = this->usuario; | ||
138 | + loginMap["password"] = this->password; | ||
139 | + QJsonObject loginJson = QJsonObject::fromVariantMap(loginMap); | ||
140 | + | ||
141 | + // Cria conexão e retorna Json da sessão | ||
142 | + QJsonObject retorno = this->comm("login", loginJson); | ||
143 | + | ||
144 | + return retorno; | ||
145 | + | ||
146 | + } | ||
147 | + | ||
148 | +signals: | ||
149 | + void finished(QNetworkReply* reply); | ||
150 | +}; | ||
151 | + | ||
152 | +#endif // CACIC_COMM_H |