RestLink 2.2.0
Powerfull Rest Client for Qt
Loading...
Searching...
No Matches
parameter.h
1#ifndef RESTLINK_PARAMETER_H
2#define RESTLINK_PARAMETER_H
3
4#include <RestLink/global.h>
5
6#include <QtCore/qshareddata.h>
7#include <QtCore/qlist.h>
8
9class QJsonObject;
10
11namespace RestLink {
12
13class Api;
14class PathParameter;
15class QueryParameter;
16class Header;
17
18class ParameterData;
19class RESTLINK_EXPORT Parameter
20{
21public:
22 enum Flag {
23 NoFlag = 0x0,
24
25 Authentication = 0x1,
26 Secret = 0x2,
27
28 Locale = 0x64
29 };
30 Q_DECLARE_FLAGS(Flags, Flag)
31
38
39 Parameter();
40 Parameter(const Parameter &other);
41 Parameter(Parameter &&other);
42 ~Parameter();
43
44 Parameter &operator=(const Parameter &other);
45 Parameter &operator=(Parameter &&other);
46
47 QString name() const;
48 void setName(const QString &name);
49
50 QVariant value() const;
51 void setValue(const QVariant &value);
52
53 QVariant specialValue(Api *api) const;
54 QVariantList specialValues(Api *api) const;
55
56 bool hasValue(const QVariant &value) const;
57 void addValue(const QVariant &value);
58 void removeValue(const QVariant &value);
59
60 QList<QVariant> values() const;
61 void setValues(const QList<QVariant> &values);
62
63 bool hasFlag(Flag flag) const;
64 Flags flags() const;
65 void setFlag(Flag flag, bool on = true);
66 void setFlags(const Flags &flags);
67
68 //bool isPathParameter() const;
69 //bool isQueryParameter() const;
70 //bool isHeader() const;
71 Type type() const;
72
73 bool isValid() const;
74
75 PathParameter toPathParameter() const;
76 QueryParameter toQueryParameter() const;
77 Header toHeader() const;
78
79 QJsonObject toJsonObject() const;
80 static Parameter fromJsonObject(const QJsonObject &object, Type type);
81
82 static Parameter merge(const Parameter &p1, const Parameter &p2);
83
84 bool operator==(const Parameter &other) const;
85 bool operator!=(const Parameter &other) const;
86
87protected:
88 Parameter(ParameterData *d);
89 Parameter(const QSharedDataPointer<ParameterData> &data);
90
91 static void dataFromJsonObject(ParameterData *data, const QJsonObject &object);
92
93 QSharedDataPointer<ParameterData> d_ptr;
94};
95
96} // namespace RestLink
97
98#endif // RESTLINK_PARAMETER_H