5#ifndef QRESTACCESSMANAGER_P_H
6#define QRESTACCESSMANAGER_P_H
20#include "private/qobject_p.h"
22#include <QtNetwork/qnetworkaccessmanager.h>
24#include <QtCore/qloggingcategory.h>
25#include <QtCore/qjsonarray.h>
26#include <QtCore/qhash.h>
27#include <QtCore/qjsondocument.h>
28#include <QtCore/qjsonobject.h>
29#include <QtCore/qxpfunctional.h>
33Q_DECLARE_LOGGING_CATEGORY(lcQrest)
43 QtPrivate::SlotObjUniquePtr slot);
48 const QObject *context, QtPrivate::QSlotObjectBase *rawSlot)
50 QtPrivate::SlotObjUniquePtr slot(rawSlot);
52 return warnNoAccessManager();
53 verifyThreadAffinity(context);
54 QNetworkReply *reply = requestOperation(qnam);
55 return createActiveRequest(reply, context, std::move(slot));
62 const QNetworkRequest &request,
63 const QObject *context, QtPrivate::QSlotObjectBase *rawSlot)
65 QtPrivate::SlotObjUniquePtr slot(rawSlot);
67 return warnNoAccessManager();
68 verifyThreadAffinity(context);
69 QNetworkRequest req(request);
70 auto h = req.headers();
71 if (!h.contains(QHttpHeaders::WellKnownHeader::ContentType)) {
72 h.append(QHttpHeaders::WellKnownHeader::ContentType,
73 QLatin1StringView{
"application/json"});
75 req.setHeaders(std::move(h));
76 QNetworkReply *reply = requestOperation(qnam, req, jsonDoc.toJson(QJsonDocument::Compact));
77 return createActiveRequest(reply, context, std::move(slot));
92 Q_DECLARE_PUBLIC(QRestAccessManager)
~QRestAccessManagerPrivate() override
QRestAccessManagerPrivate()
QNetworkReply * executeRequest(ReqOpRef requestOperation, const QObject *context, QtPrivate::QSlotObjectBase *rawSlot)
bool deletesRepliesOnFinished
QHash< QNetworkReply *, CallerInfo > activeRequests
QNetworkReply * executeRequest(ReqOpRefJson requestOperation, const QJsonDocument &jsonDoc, const QNetworkRequest &request, const QObject *context, QtPrivate::QSlotObjectBase *rawSlot)
QNetworkAccessManager * qnam
void handleReplyFinished(QNetworkReply *reply)
QNetworkReply * createActiveRequest(QNetworkReply *reply, const QObject *contextObject, QtPrivate::SlotObjUniquePtr slot)
void verifyThreadAffinity(const QObject *contextObject)
The QRestAccessManager is a convenience wrapper for QNetworkAccessManager.
QRestReply is a convenience wrapper for QNetworkReply.
Q_LOGGING_CATEGORY(lcEventDispatcher, "qt.eventdispatcher")
static const QByteArray & PATCH()
#define QREST_METHOD_CUSTOM_WITH_DATA(DATA)
#define QREST_METHOD_NO_DATA(METHOD)
#define QREST_METHOD_WITH_DATA(METHOD, DATA)
QtPrivate::SlotObjSharedPtr slot
QPointer< const QObject > contextObject