-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHttpRequestWorker.h
executable file
·117 lines (100 loc) · 3.1 KB
/
HttpRequestWorker.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
/****************************************************************************
**
** Copyright (C) 2007-2015 Speedovation
** Copyright (C) 2015 creativepulse.gr
** Contact: Speedovation Lab (info@speedovation.com)
**
** KineticWing IDE CrashHandler
** http:// kineticwing.com
** This file is part of the core classes of the KiWi Editor (IDE)
**
** Author: creativepulse.gr
** https://github.com/codeyash
** https://github.com/fro0m
** License : Apache License 2.0
**
** All rights are reserved.
*/
#ifndef HTTPREQUESTWORKER_H
#define HTTPREQUESTWORKER_H
#include <QMap>
#include <QNetworkReply>
#include <QObject>
#include <QString>
class QNetworkAccessManager;
namespace Literals
{
static const QString getMethod = QStringLiteral("GET");
static const QString postMethod = QStringLiteral("POST");
static const QString putMethod = QStringLiteral("PUT");
static const QString headMethod = QStringLiteral("HEAD");
static const QString deleteMethod = QStringLiteral("DELETE");
} // namespace Literals
enum HttpRequestVarLayout
{
NOT_SET,
ADDRESS,
URL_ENCODED,
JSON,
MULTIPART
};
class HttpRequestInputFilePathElement
{
public:
QString variableName;
QString localFilename;
QString requestFilename;
QByteArray mimeType;
};
class HttpRequestInputFileDataElement
{
public:
QString variableName;
QByteArray localFileData;
QString requestFilename;
QByteArray mimeType;
};
class HttpRequestInput
{
public:
QString urlStr;
// qint32 port = -1;
QString httpMethod;
HttpRequestVarLayout varLayout;
QMap<QString, QByteArray> vars;
QMap<QByteArray, QByteArray> headers;
QList<HttpRequestInputFilePathElement> files;
QList<HttpRequestInputFileDataElement> filesData;
explicit HttpRequestInput(const QString& v_urlStr = "",
const QString& v_httpMethod = Literals::getMethod);
void addVar(const QString& key, const QByteArray& value);
void addHeader(const QByteArray& header, const QByteArray& value);
void addFile(const QString& variableName, const QString& localFilename,
const QString& requestFilename, const QByteArray& mimeType);
void addFile(const QString& variableName, const QByteArray& localFileData,
const QString& requestFilename, const QByteArray& mimeType);
};
class HttpRequestWorker : public QObject
{
Q_OBJECT
public:
explicit HttpRequestWorker(QObject* parent = nullptr);
~HttpRequestWorker();
QByteArray response;
QNetworkReply::NetworkError errorType;
QString errorStr;
int statusCode; // HTTP status code
QByteArray httpAttributeEncode(const QString& attribute_name, const QString& input);
QNetworkReply::NetworkError execute(HttpRequestInput* input);
void setReadResponseOnError(bool t_readResponseOnError);
void setReadErrorString(bool readErrorString);
signals:
void executionFinished(HttpRequestWorker* worker);
private:
QNetworkAccessManager* manager;
bool m_readResponseOnError = false;
bool m_readErrorString = false;
private slots:
void managerFinished(QNetworkReply* reply);
};
#endif // HTTPREQUESTWORKER_H