qTbot
0.2.123.6f57966
qTbot is base back end library for your c++ Qt projects.
Toggle main menu visibility
irequest.cpp
Go to the documentation of this file.
1
//#
2
//# Copyright (C) 2023-2026 QuasarApp.
3
//# Distributed under the GPLv3 software license, see the accompanying
4
//# Everyone is permitted to copy and distribute verbatim copies
5
//# of this license document, but changing it is not allowed.
6
//#
7
8
#include "
irequest.h
"
9
#include "qvariant.h"
10
11
#include <QBuffer>
12
13
namespace
qTbot
{
14
15
iRequest::iRequest
()
16
{
17
18
}
19
20
QString
iRequest::makeUpload
()
const
{
21
22
if
(_args.isEmpty() ||
method
() !=
Get
) {
23
return
"/"
+ _request;
24
}
25
26
return
"/"
+ _request +
"?"
+
argsToUrl
();
27
28
}
29
30
const
QMap<QString, QVariant>&
iRequest::args
()
const
{
31
return
_args;
32
}
33
34
void
iRequest::addArg
(
const
QString &key,
const
QVariant &val) {
35
_args[key] = val;
36
}
37
38
void
iRequest::setArgs
(
const
QMap<QString, QVariant> &newArgs) {
39
_args = newArgs;
40
}
41
42
QString
iRequest::argsToUrl
()
const
{
43
QString
args
;
44
45
auto
it = _args.constBegin();
46
while
(it != _args.constEnd()) {
47
if
(
args
.isEmpty()) {
48
args
.append(QString(
"%0=%1"
).arg(it.key(), it->toString()).toUtf8());
49
}
else
{
50
args
.append(QString(
"&%0=%1"
).arg(it.key(), it->toString()).toUtf8());
51
}
52
++it;
53
}
54
55
return
args
;
56
}
57
58
QSharedPointer<QHttpMultiPart>
iRequest::argsToMultipartFormData
()
const
{
59
QSharedPointer<QHttpMultiPart> multiPart = QSharedPointer<QHttpMultiPart>::create(QHttpMultiPart::FormDataType);
60
61
auto
it = _args.constBegin();
62
while
(it != _args.constEnd()) {
63
QHttpPart part;
64
auto
&& value = it.value();
65
66
if
(it.key().contains(
REQUEST_UPLOAD_FILE_KEY
)) {
67
auto
metaData = it.key().split(
":"
);
68
69
if
(metaData.size() == 3) {
70
const
auto
fileName = metaData[1];
71
const
auto
fileType = metaData[2];
72
73
part.setHeader(QNetworkRequest::ContentDispositionHeader,
74
"form-data; name=\""
+ fileType +
"\"; filename=\""
+ fileName +
"\""
);
75
76
part.setBody(value.toByteArray());
77
}
else
{
78
qWarning() <<
"the file arguments must be like _file_:fileName:fileType"
<< _args;
79
return
nullptr
;
80
}
81
82
}
else
{
83
part.setHeader(QNetworkRequest::ContentDispositionHeader,
"form-data; name=\""
+ it.key() +
"\""
);
84
part.setBody(value.toByteArray());
85
}
86
multiPart->append(part);
87
88
++it;
89
}
90
91
return
multiPart;
92
}
93
94
iRequest::RequestPriority
iRequest::priority
()
const
{
95
return
_priority;
96
}
97
98
void
iRequest::setPriority
(
RequestPriority
newPriority) {
99
_priority = newPriority;
100
}
101
102
const
QString&
iRequest::request
()
const
{
103
return
_request;
104
}
105
106
void
iRequest::setRequest
(
const
QString &newRequest) {
107
_request = newRequest;
108
}
109
}
qTbot::iRequest::argsToUrl
QString argsToUrl() const
argsToUrl This method converts the arguments to a URL string.
Definition
irequest.cpp:42
qTbot::iRequest::Get
@ Get
Get general get request, all request data is sent as a url line.
Definition
irequest.h:47
qTbot::iRequest::priority
RequestPriority priority() const
priority This is the priority of executing this request on the client.
Definition
irequest.cpp:94
qTbot::iRequest::makeUpload
virtual QString makeUpload() const
makeUpload This method prepares the data to upload.
Definition
irequest.cpp:20
qTbot::iRequest::setRequest
void setRequest(const QString &newRequest)
setRequest sets a custom request command
Definition
irequest.cpp:106
qTbot::iRequest::args
const QMap< QString, QVariant > & args() const
args This method returns the the current list of arguments
Definition
irequest.cpp:30
qTbot::iRequest::request
const QString & request() const
request Returns the current request command.
Definition
irequest.cpp:102
qTbot::iRequest::setArgs
void setArgs(const QMap< QString, QVariant > &newArgs)
setArgs For some requests the list of arguments is possible to build only after the constructor.
Definition
irequest.cpp:38
qTbot::iRequest::addArg
void addArg(const QString &key, const QVariant &val)
addArg This method pushes a new argument to the arguments list
Definition
irequest.cpp:34
qTbot::iRequest::method
virtual RequestMethod method() const =0
method returns the method of the request.
qTbot::iRequest::iRequest
iRequest()
iRequest default constructor.
Definition
irequest.cpp:15
qTbot::iRequest::setPriority
void setPriority(RequestPriority newPriority)
setPriority This method sets a new priority for the request.
Definition
irequest.cpp:98
qTbot::iRequest::RequestPriority
RequestPriority
The RequestPriority enum This is the list of request execution priorities on the client side.
Definition
irequest.h:61
qTbot::iRequest::argsToMultipartFormData
QSharedPointer< QHttpMultiPart > argsToMultipartFormData() const
argsToMultipartFormData This method generates multipart/form-data request data.
Definition
irequest.cpp:58
irequest.h
REQUEST_UPLOAD_FILE_KEY
#define REQUEST_UPLOAD_FILE_KEY
Definition
irequest.h:19
qTbot
Definition
telegramdeletemessage.cpp:8
src
qTbot
src
public
qTbot
irequest.cpp
Generated by
1.18.0