-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathhttp_data.h
173 lines (134 loc) · 4.31 KB
/
http_data.h
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
#ifndef POST_DATA_H
#define POST_DATA_H
#include <QObject>
#include <QVariant>
#include <QJsonValue>
#define POST_TYPE_NONE_STR "None"
#define POST_TYPE_URL_QUERY_STR "Url Query"
#define POST_TYPE_BODY_STR "Body"
#define POST_TYPE_HEADER_STR "Header"
#define POST_TYPE_UNKNOWN_STR "Unknown"
#define POST_VALUE_TYPE_VALUE_STR "value"
#define POST_VALUE_TYPE_UNIX_TIMESTAMP_STR "unix_timestamp"
#define POST_VALUE_TYPE_UCENTER_AUTHCODE_STR "ucenter_authcode"
#define POST_VALUE_TYPE_JAVASCRIPT_STR "javascript"
#define HTTP_DATA_FIELD_KEY "key"
#define HTTP_DATA_FIELD_USED "used"
#define HTTP_DATA_FIELD_POST_TYPE "post_type"
#define HTTP_DATA_FIELD_AUTH "auth"
#define HTTP_DATA_FIELD_VALUE_TYPE "value_type"
#define HTTP_DATA_FIELD_VALUE "value"
class http_data : public QObject
{
Q_OBJECT
Q_PROPERTY(QString key READ key WRITE set_key)
Q_PROPERTY(bool used READ used WRITE set_used)
Q_PROPERTY(post_type_t post_type READ post_type WRITE set_post_type)
Q_PROPERTY(bool auth READ auth WRITE set_auth)
Q_PROPERTY(QString value_type READ value_type WRITE set_value_type)
Q_PROPERTY(QString value READ value WRITE set_value)
public:
Q_INVOKABLE http_data(QObject *parent = 0);
~http_data();
enum post_type_t{
POST_TYPE_NONE = 0x01,
POST_TYPE_URL_QUERY = 0x02,
POST_TYPE_BODY = 0x04,
POST_TYPE_HEADER = 0x08,
POST_TYPE_ALL = POST_TYPE_NONE|POST_TYPE_URL_QUERY | POST_TYPE_BODY | POST_TYPE_HEADER
};
Q_ENUM(post_type_t);
enum auth_type_t{
HTTP_DATA_AUTH_ALL,
HTTP_DATA_AUTH,
HTTP_DATA_NOT_AUTH
};
QString key() const;
void set_key(const QString& key);
bool used() const;
void set_used(const bool used);
post_type_t post_type() const;
QString post_type_string() const;
void set_post_type(post_type_t post_type);
bool auth() const;
void set_auth(bool auth);
QString value_type() const;
void set_value_type(const QString& value_type);
QString value() const;
void set_value(const QString value);
QVariant data() const;
void set_data(const QVariant& value);
public:
static post_type_t get_post_type(const QString& post_type);
static QString get_post_type_string(post_type_t post_type);
private:
QString _key;
bool _used;
post_type_t _post_type;
bool _auth;
QString _value_type;
QString _value;
QVariant _data;
};
typedef QSharedPointer<http_data> http_data_ptr;
typedef QSharedPointer<const http_data> http_data_constptr;
class http_data_list:
public QList<http_data_ptr>
{
public:
QString to_url_encode_string() const;
QString to_url_encode_string(int post_type,
int auth_type = http_data::HTTP_DATA_AUTH_ALL) const;
http_data_list get_post_datas(int post_type = http_data::POST_TYPE_ALL,
int auth_type = http_data::HTTP_DATA_AUTH_ALL, bool only_used = true) const;
QJsonValue to_json();
void append_from_json(const QJsonValue& v);
public:
static http_data_list from_json(const QJsonValue& v);
private:
static QByteArray url_encode(const QString &data);
};
#define HTTP_FORM_DATA_FIELD_NAME "name"
#define HTTP_FORM_DATA_FIELD_USED "used"
#define HTTP_FORM_DATA_FIELD_CONTENT_TYPE "content_type"
#define HTTP_FORM_DATA_FIELD_VALUE "value"
class http_form_data : public QObject
{
Q_OBJECT
Q_PROPERTY(QString name READ name WRITE set_name)
Q_PROPERTY(bool used READ used WRITE set_used)
Q_PROPERTY(QString content_type READ content_type WRITE set_content_type)
Q_PROPERTY(QString value READ value WRITE set_value)
Q_PROPERTY(QVariant data READ data WRITE set_data)
public:
Q_INVOKABLE http_form_data(QObject *parent = 0);
~http_form_data();
QString name() const;
void set_name(const QString& name);
bool used() const;
void set_used(const bool used);
QString content_type() const;
void set_content_type(const QString& content_type);
QString value() const;
void set_value(const QString value);
QVariant data() const;
void set_data(const QVariant& data);
private:
QString _name;
bool _used;
QString _content_type;
QString _value;
QVariant _data;
};
typedef QSharedPointer<http_form_data> http_form_data_ptr;
typedef QSharedPointer<const http_form_data> http_form_data_constptr;
class http_form_data_list :
public QList<http_form_data_ptr>
{
public:
QJsonValue to_json();
void append_from_json(const QJsonValue& v);
public:
static http_form_data_list from_json(const QJsonValue& v);
};
#endif // POST_DATA_H