Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qrestaccessmanager.h
Go to the documentation of this file.
1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QRESTACCESSMANAGER_H
5#define QRESTACCESSMANAGER_H
6
7#if 0
8#pragma qt_class(QRestAccessManager)
9#endif
10
11#include <QtNetwork/qnetworkaccessmanager.h>
12
14
15class QDebug;
16class QRestReply;
17
18#define QREST_METHOD_WITH_DATA(METHOD, DATA) \
19public: \
20template <typename Functor, if_compatible_callback<Functor> = true> \
21QNetworkReply *METHOD(const QNetworkRequest &request, DATA data, \
22 const ContextTypeForFunctor<Functor> *context, \
23 Functor &&callback) \
24{ \
25 return METHOD##WithDataImpl(request, data, context, \
26 QtPrivate::makeCallableObject<CallbackPrototype>(std::forward<Functor>(callback))); \
27} \
28QNetworkReply *METHOD(const QNetworkRequest &request, DATA data) \
29{ \
30 return METHOD##WithDataImpl(request, data, nullptr, nullptr); \
31} \
32private: \
33QNetworkReply *METHOD##WithDataImpl(const QNetworkRequest &request, DATA data, \
34 const QObject *context, QtPrivate::QSlotObjectBase *slot); \
35/* end */
36
37#define QREST_METHOD_NO_DATA(METHOD) \
38public: \
39template <typename Functor, if_compatible_callback<Functor> = true> \
40QNetworkReply *METHOD(const QNetworkRequest &request, \
41 const ContextTypeForFunctor<Functor> *context, \
42 Functor &&callback) \
43{ \
44 return METHOD##NoDataImpl(request, context, \
45 QtPrivate::makeCallableObject<CallbackPrototype>(std::forward<Functor>(callback))); \
46} \
47QNetworkReply *METHOD(const QNetworkRequest &request) \
48{ \
49 return METHOD##NoDataImpl(request, nullptr, nullptr); \
50} \
51private: \
52QNetworkReply *METHOD##NoDataImpl(const QNetworkRequest &request, \
53 const QObject *context, QtPrivate::QSlotObjectBase *slot); \
54/* end */
55
56#define QREST_METHOD_CUSTOM_WITH_DATA(DATA) \
57public: \
58template <typename Functor, if_compatible_callback<Functor> = true> \
59QNetworkReply *sendCustomRequest(const QNetworkRequest& request, const QByteArray &method, DATA data, \
60 const ContextTypeForFunctor<Functor> *context, \
61 Functor &&callback) \
62{ \
63 return customWithDataImpl(request, method, data, context, \
64 QtPrivate::makeCallableObject<CallbackPrototype>(std::forward<Functor>(callback))); \
65} \
66QNetworkReply *sendCustomRequest(const QNetworkRequest& request, const QByteArray &method, DATA data) \
67{ \
68 return customWithDataImpl(request, method, data, nullptr, nullptr); \
69} \
70private: \
71QNetworkReply *customWithDataImpl(const QNetworkRequest& request, const QByteArray &method, \
72 DATA data, const QObject* context, \
73 QtPrivate::QSlotObjectBase *slot); \
74/* end */
75
77class QT_TECH_PREVIEW_API Q_NETWORK_EXPORT QRestAccessManager : public QObject
78{
80 using CallbackPrototype = void(*)(QRestReply&);
81 template <typename Functor>
82 using ContextTypeForFunctor = typename QtPrivate::ContextTypeForFunctor<Functor>::ContextType;
83 template <typename Functor>
84 using if_compatible_callback = std::enable_if_t<
86public:
87 explicit QRestAccessManager(QNetworkAccessManager *manager, QObject *parent = nullptr);
89
90 QNetworkAccessManager *networkAccessManager() const;
91
115
116private:
117 Q_DECLARE_PRIVATE(QRestAccessManager)
118 Q_DISABLE_COPY(QRestAccessManager)
119};
120
121#undef QREST_METHOD_NO_DATA
122#undef QREST_METHOD_WITH_DATA
123#undef QREST_METHOD_CUSTOM_WITH_DATA
124
126
127#endif
\inmodule QtCore
Definition qbytearray.h:57
\inmodule QtCore
The QHttpMultiPart class resembles a MIME multipart message to be sent over HTTP.
\inmodule QtCore \reentrant
Definition qiodevice.h:34
\inmodule QtCore\reentrant
The QNetworkAccessManager class allows the application to send network requests and receive replies.
\inmodule QtCore
Definition qobject.h:103
The QRestAccessManager is a convenience wrapper for QNetworkAccessManager.
~QRestAccessManager() override
Destroys the QRestAccessManager object.
QRestReply is a convenience wrapper for QNetworkReply.
Definition qrestreply.h:24
Combined button and popup list for selecting options.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
static QDBusError::ErrorType get(const char *name)
#define QREST_METHOD_CUSTOM_WITH_DATA(DATA)
#define QREST_METHOD_NO_DATA(METHOD)
#define QREST_METHOD_WITH_DATA(METHOD, DATA)
#define Q_OBJECT
#define QT_TECH_PREVIEW_API
QNetworkAccessManager manager
manager deleteResource(request, this, [this](QRestReply &reply) { if(reply.isSuccess()) })
[7]
manager head(request, this, [this](QRestReply &reply) { if(reply.isSuccess()) })
[6]
manager post(request, myJson, this, [this](QRestReply &reply) { if(!reply.isSuccess()) { } if(std::optional json=reply.readJson()) { } })
manager put(request, myData, this, [this](QRestReply &reply) { if(reply.isSuccess()) })
[5]
manager patch(request, myData, this, [this](QRestReply &reply) { if(reply.isSuccess()) })
[9]