Skip to content

Commit 908d2cc

Browse files
authored
POST int values (#13)
1 parent 1242107 commit 908d2cc

8 files changed

+78
-15
lines changed

BackendlessAPI.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ BackendlessAPI::BackendlessAPI(QString _appId, QString _apiKey, QString _endpoin
2222

2323
}
2424

25-
void BackendlessAPI::addItemToTable(QString tableName, QMap<QString, QString> params) {
25+
void BackendlessAPI::addItemToTable(QString tableName, PostParams params) {
2626
request(
2727
&networkAccessManager,
2828
this,

BackendlessAPI.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class BackendlessAPI: public QObject, public BasicAPI {
2626

2727
public:
2828
BackendlessAPI(QString _appId, QString _apiKey, QString _endpoint = "https://eu-api.backendless.com/");
29-
void addItemToTable(QString, QMap<QString, QString>);
29+
void addItemToTable(QString, PostParams);
3030
void deleteItemFromTable(QString, QString);
3131
void loadTableItems(QString);
3232

BackendlessUser.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ BasicBackendlessRegisterUser::BasicBackendlessRegisterUser(
1414
): email(_email), password(_password) {
1515
}
1616

17-
QMap<QString, QString> BasicBackendlessRegisterUser::getAllParams() {
17+
PostParams BasicBackendlessRegisterUser::getAllParams() {
1818
return {
19-
{"email", email},
20-
{"password", password}
19+
{"email", new StringPostParam(email)},
20+
{"password", new StringPostParam(password)}
2121
};
2222
}

BackendlessUser.hpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@
1212
#include <QJsonObject>
1313
#include <QMap>
1414
#include <QString>
15+
#include <QJsonParseError>
16+
#include "BasicAPI.hpp"
1517

1618
class BackendlessRegisterUserRepresentable {
1719
public:
1820
virtual ~BackendlessRegisterUserRepresentable() = default;
19-
virtual QMap<QString, QString> getAllParams() = 0;
21+
virtual PostParams getAllParams() = 0;
2022
};
2123

2224
struct BasicBackendlessRegisterUser: BackendlessRegisterUserRepresentable {
@@ -26,7 +28,7 @@ struct BasicBackendlessRegisterUser: BackendlessRegisterUserRepresentable {
2628
QString _password
2729
);
2830

29-
QMap<QString, QString> getAllParams() override;
31+
PostParams getAllParams() override;
3032

3133
protected:
3234
QString email;

BackendlessUserAPI.cpp

+30-3
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,17 @@
1212
#include <QNetworkReply>
1313
#include <QJsonDocument>
1414
#include <QJsonObject>
15+
#include <QStandardPaths>
16+
#include <QFile>
1517
#include "BackendlessUserAPI.hpp"
1618

1719
BackendlessUserAPI::BackendlessUserAPI(QNetworkAccessManager* _networkAccessManager, QString _appId, QString _apiKey, QString _endpoint): QObject(),
1820
networkAccessManager(_networkAccessManager),
1921
appId(_appId),
2022
apiKey(_apiKey),
2123
endpoint(_endpoint) {
22-
24+
readTokenFromDisk();
25+
qDebug() << userToken;
2326
}
2427

2528
void BackendlessUserAPI::registerUser(BackendlessRegisterUserRepresentable& user) {
@@ -44,8 +47,8 @@ void BackendlessUserAPI::signInUser(QString login, QString password) {
4447
this,
4548
endpoint + appId + "/" + apiKey + "/users/login",
4649
{
47-
{"login", login},
48-
{"password", password}
50+
{"login", new StringPostParam(login)},
51+
{"password", new StringPostParam(password)}
4952
},
5053
BERequestMethod::post,
5154
[&](QNetworkReply* reply){
@@ -69,6 +72,8 @@ void BackendlessUserAPI::signInUser(QString login, QString password) {
6972
extractResult<BackendlessSignInUser>(
7073
replyValue,
7174
[&](auto user) {
75+
userToken = user.userToken;
76+
saveTokenOnDisk();
7277
emit signInUserSuccess(user);
7378
},
7479
[&](auto beError) {
@@ -83,6 +88,28 @@ void BackendlessUserAPI::signInUser(QString login, QString password) {
8388
);
8489
}
8590

91+
void BackendlessUserAPI::readTokenFromDisk() {
92+
auto path = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation);
93+
auto fileName = path + "/backendless_token.txt";
94+
QFile file(fileName);
95+
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
96+
QTextStream stream(&file);
97+
stream >> userToken;
98+
}
99+
file.close();
100+
}
101+
102+
void BackendlessUserAPI::saveTokenOnDisk() {
103+
auto path = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation);
104+
auto fileName = path + "/backendless_token.txt";
105+
QFile file(fileName);
106+
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
107+
QTextStream stream(&file);
108+
stream << userToken;
109+
}
110+
file.close();
111+
}
112+
86113
void BackendlessUserAPI::validateUserToken() {
87114
request(
88115
networkAccessManager,

BackendlessUserAPI.hpp

+4
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ class BackendlessUserAPI: public QObject, public BasicAPI {
2929
void validateUserToken();
3030
void restorePassword(QString);
3131

32+
private:
33+
void readTokenFromDisk();
34+
void saveTokenOnDisk();
35+
3236
signals:
3337
void registerUserResult();
3438

BasicAPI.cpp

+2-4
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ void BasicAPI::request(
1818
QNetworkAccessManager* networkAccessManager,
1919
const QObject* context,
2020
QString urlString,
21-
QMap<QString, QString> customParams,
21+
PostParams customParams,
2222
BERequestMethod method,
2323
std::function<void(QNetworkReply*)> const& handleRequest
2424
) {
@@ -34,9 +34,7 @@ void BasicAPI::request(
3434
params += key;
3535
params += "\"";
3636
params += ":";
37-
params += "\"";
38-
params += value;
39-
params += "\"";
37+
params += value->asParam();
4038
params += ",";
4139
}
4240

BasicAPI.hpp

+33-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,38 @@
1414
#include <QNetworkAccessManager>
1515
#include <QJsonObject>
1616

17+
class PostParam {
18+
public:
19+
virtual ~PostParam() = default;
20+
virtual QString asParam() = 0;
21+
};
22+
23+
typedef QMap<QString, PostParam*> PostParams;
24+
25+
class StringPostParam: public PostParam {
26+
public:
27+
StringPostParam(QString _value): value(_value) { }
28+
29+
QString asParam() override {
30+
return "\"" + value + "\"";
31+
}
32+
33+
private:
34+
QString value;
35+
};
36+
37+
class IntPostParam: public PostParam {
38+
public:
39+
IntPostParam(int _value): value(_value) { }
40+
41+
QString asParam() override {
42+
return QString::number(value);
43+
}
44+
45+
private:
46+
int value;
47+
};
48+
1749
enum class BackendlessErrorCode {
1850
noError = 0,
1951
entityNotFound = 1000,
@@ -84,7 +116,7 @@ class BasicAPI {
84116
QNetworkAccessManager*,
85117
const QObject*,
86118
QString,
87-
QMap<QString, QString>,
119+
PostParams,
88120
BERequestMethod,
89121
std::function<void(QNetworkReply*)> const&
90122
);

0 commit comments

Comments
 (0)