-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBasicAPI.hpp
More file actions
102 lines (83 loc) · 2.19 KB
/
BasicAPI.hpp
File metadata and controls
102 lines (83 loc) · 2.19 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
//
// BasicAPI.hpp
// BackendlessQt
//
// Created by Roman Podymov on 09/08/2024.
// Copyright © 2024 BackendlessQt. All rights reserved.
//
#ifndef BASIC_API_H
#define BASIC_API_H
#include <QString>
#include <QMap>
#include <QNetworkAccessManager>
#include <QJsonObject>
#include <QJsonParseError>
class PostParam {
public:
virtual ~PostParam() = default;
virtual QString asParam() = 0;
};
typedef QMap<QString, PostParam*> PostParams;
class StringPostParam: public PostParam {
public:
StringPostParam(QString _value): value(_value) { }
QString asParam() override {
return "\"" + value + "\"";
}
private:
QString value;
};
template<typename T>
class NumericPostParam: public PostParam {
public:
NumericPostParam(T _value): value(_value) { }
QString asParam() override {
return QString::number(value);
}
private:
T value;
};
typedef NumericPostParam<int> IntPostParam;
enum class BackendlessErrorCode {
noError = 0,
entityNotFound = 1000,
unknownEntity = 1009,
invalidLoginOrPassword = 3003
};
enum class BackendlessValidateUserTokenError {
invalidResponse
};
struct BackendlessError {
BackendlessErrorCode code;
QString message;
BackendlessError(
BackendlessErrorCode _code,
QString _message
): code(_code), message(_message) { }
};
enum class BERequestMethod {
get,
post,
put,
deleteResource
};
class AnyNetworkAccessManager {
public:
virtual void get(QString, QMap<QString, QString>, const QObject*, std::function<void(QByteArray)> const&) = 0;
virtual void post(QString, QMap<QString, QString>, PostParams, const QObject*, std::function<void(QByteArray)> const&) = 0;
virtual void put(QString, QMap<QString, QString>, PostParams, const QObject*, std::function<void(QByteArray)> const&) = 0;
virtual void deleteResource(QString, QMap<QString, QString>, const QObject*, std::function<void(QByteArray)> const&) = 0;
};
class BasicAPI {
protected:
void request(
AnyNetworkAccessManager*,
const QObject*,
QString,
PostParams,
BERequestMethod,
QMap<QString, QString>,
std::function<void(QByteArray)> const&
);
};
#endif