5#ifndef QRESTACCESSMANAGER_H
6#define QRESTACCESSMANAGER_H
9#pragma qt_class(QRestAccessManager)
12#include <QtNetwork/qnetworkaccessmanager.h>
19#define QREST_METHOD_WITH_DATA(METHOD, DATA) public
21 <typename Functor, if_compatible_callback<Functor> = true> QNetworkReply
22 *METHOD(const QNetworkRequest &request, DATA data,
23 const ContextTypeForFunctor<Functor> *context,
25{
26 return METHOD##WithDataImpl(request, data, context,
27 QtPrivate::makeCallableObject<CallbackPrototype>(std::forward<Functor>(callback))); \
28} QNetworkReply
29 *METHOD(const QNetworkRequest &request, DATA data) \
30{
31 return METHOD##WithDataImpl(request, data, nullptr, nullptr); \
32} private
34 *METHOD##WithDataImpl(const QNetworkRequest &request, DATA data,
35 const QObject *context, QtPrivate::QSlotObjectBase *slot);
36
38#define QREST_METHOD_NO_DATA(METHOD) public
40 <typename Functor, if_compatible_callback<Functor> = true> QNetworkReply
41 *METHOD(const QNetworkRequest &request,
42 const ContextTypeForFunctor<Functor> *context,
44{
45 return METHOD##NoDataImpl(request, context,
46 QtPrivate::makeCallableObject<CallbackPrototype>(std::forward<Functor>(callback))); \
47} QNetworkReply
48 *METHOD(const QNetworkRequest &request) \
49{
50 return METHOD##NoDataImpl(request, nullptr, nullptr); \
51} private
53 *METHOD##NoDataImpl(const QNetworkRequest &request,
54 const QObject *context, QtPrivate::QSlotObjectBase *slot);
55
57#define QREST_METHOD_CUSTOM_WITH_DATA(DATA) public
59 <typename Functor, if_compatible_callback<Functor> = true> QNetworkReply
60 *sendCustomRequest(const QNetworkRequest& request, const QByteArray &method, DATA data,
61 const ContextTypeForFunctor<Functor> *context,
63{
64 return customWithDataImpl(request, method, data, context,
65 QtPrivate::makeCallableObject<CallbackPrototype>(std::forward<Functor>(callback))); \
66} QNetworkReply
67 *sendCustomRequest(const QNetworkRequest& request, const QByteArray &method, DATA data) \
68{
69 return customWithDataImpl(request, method, data, nullptr, nullptr); \
70} private
72 *customWithDataImpl(const QNetworkRequest& request, const QByteArray &method,
73 DATA data, const QObject* context,
74 QtPrivate::QSlotObjectBase *slot);
75
81 using CallbackPrototype =
void(*)(QRestReply&);
82 template <
typename Functor>
83 using ContextTypeForFunctor =
typename QtPrivate::ContextTypeForFunctor<Functor>::ContextType;
84 template <
typename Functor>
85 using if_compatible_callback = std::enable_if_t<
86 QtPrivate::AreFunctionsCompatible<CallbackPrototype, Functor>::value,
bool>;
88 explicit QRestAccessManager(QNetworkAccessManager *manager, QObject *parent =
nullptr);
89 ~QRestAccessManager() override;
91 QNetworkAccessManager *networkAccessManager()
const;
118 Q_DECLARE_PRIVATE(QRestAccessManager)
119 Q_DISABLE_COPY(QRestAccessManager)
122#undef QREST_METHOD_NO_DATA
123#undef QREST_METHOD_WITH_DATA
124#undef QREST_METHOD_CUSTOM_WITH_DATA
~QRestAccessManagerPrivate() override
QRestAccessManagerPrivate()
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)