18 #include "useragent.h"
20 #include <Cutelyst/Engine>
21 #include <Cutelyst/Context>
22 #include <Cutelyst/Request>
23 #include <Cutelyst/Response>
25 #include <QHostAddress>
26 #include <QLoggingCategory>
27 #include <QNetworkAccessManager>
30 #include <QHttpMultiPart>
32 #include <QJsonDocument>
34 using namespace Cutelyst;
36 Q_LOGGING_CATEGORY(C_USERAGENT,
"cutelyst.useragent", QtInfoMsg)
47 return m_instance.
head(request);
52 return m_instance.
get(request);
57 return m_instance.
post(request, data);
62 return m_instance.
post(request, data);
67 return m_instance.
put(request, data);
72 return m_instance.
put(request, data);
87 #if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
100 return m_instance.
post(request, multiPart);
105 return m_instance.
post(request, multiPart);
110 #if (QT_VERSION >= QT_VERSION_CHECK(5, 8, 0))
120 jsonRequest.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral(
"application/json"));
121 return m_instance.
post(jsonRequest, doc.
toJson(QJsonDocument::Compact));
127 jsonRequest.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral(
"application/json"));
128 return m_instance.
put(jsonRequest, doc.
toJson(QJsonDocument::Compact));
134 jsonRequest.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral(
"application/json"));
135 return UA::sendCustomRequest(jsonRequest, verb, doc.
toJson(QJsonDocument::Compact));
141 jsonRequest.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral(
"application/json"));
142 return m_instance.
post(jsonRequest,
QJsonDocument(obj).toJson(QJsonDocument::Compact));
148 jsonRequest.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral(
"application/json"));
149 return m_instance.
put(jsonRequest,
QJsonDocument(obj).toJson(QJsonDocument::Compact));
155 jsonRequest.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral(
"application/json"));
156 return UA::sendCustomRequest(jsonRequest, verb,
QJsonDocument(obj).toJson(QJsonDocument::Compact));
162 jsonRequest.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral(
"application/json"));
163 return m_instance.
post(jsonRequest,
QJsonDocument(array).toJson(QJsonDocument::Compact));
169 jsonRequest.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral(
"application/json"));
170 return m_instance.
put(jsonRequest,
QJsonDocument(array).toJson(QJsonDocument::Compact));
176 jsonRequest.setHeader(QNetworkRequest::ContentTypeHeader, QByteArrayLiteral(
"application/json"));
177 return UA::sendCustomRequest(jsonRequest, verb,
QJsonDocument(array).toJson(QJsonDocument::Compact));
182 QUrl dest(request->uri());
184 dest.setPort(destination.
port());
185 dest.setScheme(destination.
scheme());
189 const Headers reqHeaders = request->headers();
190 const auto headersData = reqHeaders.
data();
192 while (it != headersData.constEnd()) {
202 QNetworkReply *reply = forwardRequest(c->request(), destination);
215 void UA::forwardAsync(
Context *c,
const QUrl &destination)
217 QNetworkReply *reply = forwardRequest(c->request(), destination);
QNetworkReply * sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data)
QNetworkReply * put(const QNetworkRequest &request, QIODevice *data)
QByteArray toJson(JsonFormat format) const
static QString camelCaseHeader(const QString &headerKey)
QString host(ComponentFormattingOptions options) const
void setData(const QByteArray &data)
void setStatus(quint16 status)
int port(int defaultPort) const
uint toUInt(bool *ok) const
QNetworkReply * deleteResource(const QNetworkRequest &request)
QNetworkReply * post(const QNetworkRequest &request, QIODevice *data)
void setParent(QObject *parent)
Response * response() const
QNetworkReply * head(const QNetworkRequest &request)
const_iterator constBegin() const
QByteArray toLatin1() const
QVariant attribute(QNetworkRequest::Attribute code) const
QString fromLatin1(const char *str, int size)
void setHost(const QString &host, ParsingMode mode)
QNetworkReply * get(const QNetworkRequest &request)
void setBody(QIODevice *body)
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
void attachAsync()
attachAsync