QtRestClient  3.0.0
A library for generic JSON-based REST-APIs, with a mechanism to map JSON to Qt objects
Public Member Functions | List of all members
QtRestClient::GenericRestReply< Paging< DataClassType >, ErrorClassType > Class Template Reference

A class to handle generic replies for generic requests. More...

#include <genericrestreply.h>

+ Inheritance diagram for QtRestClient::GenericRestReply< Paging< DataClassType >, ErrorClassType >:

Public Member Functions

 GenericRestReply (QNetworkReply *networkReply, RestClient *client, QObject *parent=nullptr)
 Creates a generic reply based on a network reply and for a client. More...
 
 GenericRestReply (const QFuture< QNetworkReply * > &networkReplyFuture, RestClient *client, QObject *parent=nullptr)
 Creates a generic reply based on a network reply future and for a client. More...
 
GenericRestReply< Paging< DataClassType >, ErrorClassType > * onSucceeded (std::function< void(int, Paging< DataClassType >)> handler)
 Set a handler to be called if the request succeeded. More...
 
GenericRestReply< Paging< DataClassType >, ErrorClassType > * onSucceeded (QObject *scope, std::function< void(int, Paging< DataClassType >)> handler)
 Set a handler to be called if the request succeeded. More...
 
GenericRestReply< Paging< DataClassType >, ErrorClassType > * iterate (std::function< bool(DataClassType, qint64)> iterator, qint64 to=-1, qint64 from=0)
 shortcut to iterate over all elements via paging objects More...
 
GenericRestReply< Paging< DataClassType >, ErrorClassType > * iterate (QObject *scope, std::function< bool(DataClassType, qint64)> iterator, qint64 to=-1, qint64 from=0)
 shortcut to iterate over all elements via paging objects More...
 
GenericRestReply< Paging< DataClassType >, ErrorClassType > * onFailed (QObject *scope, std::function< void(int, ErrorClassType)> handler) final
 Set a handler to be called if the request failed. More...
 
GenericRestReply< Paging< DataClassType >, ErrorClassType > * onError (QObject *scope, std::function< void(QString, int, RestReply::Error)> handler) final
 Set a handler to be called if a network error or json parse error occures. More...
 
- Public Member Functions inherited from QtRestClient::GenericRestReplyBase< Paging< DataClassType >, ErrorClassType >
TInstanceonFailed (std::function< void(int, ErrorClassType)> handler)
 Set a handler to be called if the request failed. More...
 
TInstanceonSerializeException (std::function< void(QtJsonSerializer::Exception &)> handler)
 Set a handler to be called on deserialization exceptions. More...
 
TInstanceonAllErrors (const std::function< void(QString, int, Error)> &handler, std::function< QString(ErrorClassType, int)> failureTransformer={})
 Set a handler to be called if the request did not succeed. More...
 
TInstanceonAllErrors (QObject *scope, const std::function< void(QString, int, Error)> &handler, std::function< QString(ErrorClassType, int)> failureTransformer={})
 Set a handler to be called if the request did not succeed. More...
 
TInstanceonCompleted (std::function< void(int)> handler)
 Set a handler to be called when the request was completed, regardless of success or failure. More...
 
TInstanceonCompleted (QObject *scope, std::function< void(int)> handler)
 Set a handler to be called when the request was completed, regardless of success or failure. More...
 
TInstanceonError (std::function< void(QString, int, Error)> handler)
 Set a handler to be called if a network error or json parse error occures. More...
 
TInstancemakeAsync (QThreadPool *threadPool=QThreadPool::globalInstance())
 WRITE accessor for RestReply::async. More...
 
TInstancedisableAutoDelete ()
 WRITE accessor for RestReply::autoDelete. More...
 
GenericRestReplyAwaitable< Paging< DataClassType >, ErrorClassType > awaitable ()
 Returns an awaitable object for this reply.
 
- Public Member Functions inherited from QtRestClient::RestReply
 RestReply (QNetworkReply *networkReply, QObject *parent=nullptr)
 Creates a new reply based on a network reply.
 
 RestReply (const QFuture< QNetworkReply * > &networkReplyFuture, QObject *parent=nullptr)
 Creates a new reply based on a future network reply.
 
 RestReply (QNetworkReply *networkReply, QThreadPool *asyncPool, QObject *parent=nullptr)
 Creates a new reply based on a network reply and a threadpool.
 
 RestReply (const QFuture< QNetworkReply * > &networkReplyFuture, QThreadPool *asyncPool, QObject *parent=nullptr)
 Creates a new reply based on a future network reply and a threadpool.
 
template<typename TFn >
RestReplyonSucceeded (TFn &&handler)
 Set a handler to be called if the request succeeded. More...
 
template<typename TFn >
RestReplyonSucceeded (QObject *scope, TFn &&handler)
 Set a handler to be called if the request succeeded. More...
 
template<typename TFn >
RestReplyonFailed (TFn &&handler)
 Set a handler to be called if the request failed. More...
 
template<typename TFn >
RestReplyonFailed (QObject *scope, TFn &&handler)
 Set a handler to be called if the request failed. More...
 
template<typename TFn >
RestReplyonCompleted (TFn &&handler)
 Set a handler to be called when the request was completed, regardless of success or failure. More...
 
template<typename TFn >
RestReplyonCompleted (QObject *scope, TFn &&handler)
 Set a handler to be called when the request was completed, regardless of success or failure. More...
 
RestReplyonError (std::function< void(QString, int, Error)> handler)
 Set a handler to be called if a network error or json parse error occures. More...
 
RestReplyonError (QObject *scope, std::function< void(QString, int, Error)> handler)
 Set a handler to be called if a network error or json parse error occures. More...
 
template<typename TFn >
RestReplyonAllErrors (const std::function< void(QString, int, Error)> &handler, TFn &&failureTransformer)
 Set a handler to be called if the request did not succeed. More...
 
template<typename TFn >
RestReplyonAllErrors (QObject *scope, const std::function< void(QString, int, Error)> &handler, TFn &&failureTransformer)
 Set a handler to be called if the request did not succeed. More...
 
Q_INVOKABLE RestReplymakeAsync (QThreadPool *threadPool=QThreadPool::globalInstance())
 WRITE accessor for RestReply::async.
 
Q_INVOKABLE RestReplydisableAutoDelete ()
 WRITE accessor for RestReply::autoDelete.
 
bool autoDelete () const
 READ accessor for RestReply::autoDelete.
 
bool allowsEmptyReplies () const
 READ accessor for RestReply::allowEmptyReplies.
 
bool isAsync () const
 READ accessor for RestReply::async.
 
Q_INVOKABLE QNetworkReplynetworkReply () const
 Returns the network reply associated with the rest reply.
 
RestReplyAwaitable awaitable ()
 Returns an awaitable object for this reply.
 
- Public Member Functions inherited from QObject
virtual const QMetaObjectmetaObject () const const
 
 QObject (QObject *parent)
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
QString objectName () const const
 
void setObjectName (const QString &name)
 
bool isWidgetType () const const
 
bool isWindowType () const const
 
bool signalsBlocked () const const
 
bool blockSignals (bool block)
 
QThreadthread () const const
 
void moveToThread (QThread *targetThread)
 
int startTimer (int interval, Qt::TimerType timerType)
 
int startTimer (std::chrono::milliseconds time, Qt::TimerType timerType)
 
void killTimer (int id)
 
findChild (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
 
const QObjectListchildren () const const
 
void setParent (QObject *parent)
 
void installEventFilter (QObject *filterObj)
 
void removeEventFilter (QObject *obj)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const
 
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
 
bool disconnect (const QObject *receiver, const char *method) const const
 
void dumpObjectTree ()
 
void dumpObjectInfo ()
 
void dumpObjectTree () const const
 
void dumpObjectInfo () const const
 
bool setProperty (const char *name, const QVariant &value)
 
QVariant property (const char *name) const const
 
QList< QByteArraydynamicPropertyNames () const const
 
void destroyed (QObject *obj)
 
void objectNameChanged (const QString &objectName)
 
QObjectparent () const const
 
bool inherits (const char *className) const const
 
void deleteLater ()
 
 Q_DISABLE_COPY (Class)
 
 Q_DISABLE_MOVE (Class)
 
 Q_DISABLE_COPY_MOVE (Class)
 
qobject_cast (QObject *object)
 
qobject_cast (const QObject *object)
 
qFindChild (const QObject *obj, const QString &name)
 
QList< T > qFindChildren (const QObject *obj, const QString &name)
 
QList< T > qFindChildren (const QObject *obj, const QRegExp &regExp)
 
 Q_CLASSINFO (Name, Value)
 
 Q_INTERFACES (...)
 
 Q_PROPERTY (...)
 
 Q_ENUMS (...)
 
 Q_FLAGS (...)
 
 Q_ENUM (...)
 
 Q_FLAG (...)
 
 Q_ENUM_NS (...)
 
 Q_FLAG_NS (...)
 
 Q_OBJECT Q_OBJECT
 
 Q_GADGET Q_GADGET
 
 Q_NAMESPACE Q_NAMESPACE
 
 Q_SIGNALS Q_SIGNALS
 
 Q_SIGNAL Q_SIGNAL
 
 Q_SLOTS Q_SLOTS
 
 Q_SLOT Q_SLOT
 
 Q_EMIT Q_EMIT
 
 Q_INVOKABLE Q_INVOKABLE
 
 Q_REVISION Q_REVISION
 
 Q_SET_OBJECT_NAME (Object)
 
 QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
 

Additional Inherited Members

- Public Types inherited from QtRestClient::GenericRestReplyBase< Paging< DataClassType >, ErrorClassType >
using TInstance = GenericRestReply< Paging< DataClassType >, ErrorClassType >
 The specialized GenericRestReply that is associated with the reply base.
 
- Public Types inherited from QtRestClient::RestReply
enum  Error { Error::Network, Error::Parser, Error::Failure, Error::Deserialization }
 Defines the different possible error types. More...
 
using DataType = std::variant< std::nullopt_t, QCborValue, QJsonValue >
 Internal datatype that unites JSON and CBOR data in a typesafe union.
 
- Public Slots inherited from QtRestClient::RestReply
void abort ()
 Aborts the request by calling QNetworkReply::abort.
 
void retry ()
 Tries to make the same request again, and reuses this rest reply. More...
 
void retryAfter (std::chrono::milliseconds mSecs)
 Tries to make the same request again after a delay, and reuses this rest reply. More...
 
void setAutoDelete (bool autoDelete)
 WRITE accessor for RestReply::autoDelete.
 
void setAllowEmptyReplies (bool allowEmptyReplies)
 WRITE accessor for RestReply::allowEmptyReplies.
 
void setAsync (bool async)
 WRITE accessor for RestReply::async.
 
- Signals inherited from QtRestClient::RestReply
void completed (int httpStatus, const DataType &reply, QPrivateSignal)
 Is emitted when the request completed, i.e. succeeded or failed.
 
void succeeded (int httpStatus, const DataType &reply, QPrivateSignal)
 Is emitted when the request succeeded.
 
void failed (int httpStatus, const DataType &reason, QPrivateSignal)
 Is emitted when the request failed.
 
void error (const QString &errorString, int error, Error errorType, QPrivateSignal)
 Is emitted when a network or json parse error occured.
 
void networkError (QNetworkReply::NetworkError error)
 Forwards QNetworkReply::error(QNetworkReply::NetworkError)
 
void sslErrors (const QList< QSslError > &errors, bool &ignoreErrors)
 Forwards QNetworkReply::sslErrors.
 
void downloadProgress (qint64 bytesReceived, qint64 bytesTotal)
 Forwards QNetworkReply::downloadProgress.
 
void uploadProgress (qint64 bytesSent, qint64 bytesTotal)
 Forwards QNetworkReply::uploadProgress.
 
void autoDeleteChanged (bool autoDelete, QPrivateSignal)
 NOTIFY accessor for RestReply::autoDelete.
 
void allowEmptyRepliesChanged (bool allowEmptyReplies, QPrivateSignal)
 NOTIFY accessor for RestReply::allowEmptyReplies.
 
void asyncChanged (bool async, QPrivateSignal)
 NOTIFY accessor for RestReply::async.
 
- Static Public Member Functions inherited from QObject
QString tr (const char *sourceText, const char *disambiguation, int n)
 
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
bool disconnect (const QMetaObject::Connection &connection)
 
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
 
- Public Attributes inherited from QObject
typedef QObjectList
 
- Protected Member Functions inherited from QObject
QObjectsender () const const
 
int senderSignalIndex () const const
 
int receivers (const char *signal) const const
 
bool isSignalConnected (const QMetaMethod &signal) const const
 
virtual void timerEvent (QTimerEvent *event)
 
virtual void childEvent (QChildEvent *event)
 
virtual void customEvent (QEvent *event)
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
- Properties inherited from QtRestClient::RestReply
bool autoDelete
 Speciefies, whether the reply should be automatically deleted. More...
 
bool allowEmptyReplies
 Speciefies, whether empty rest replies are allowed. More...
 
bool async
 Specifies, whether the reply should be handled on a threadpool or not. More...
 
- Properties inherited from QObject
 objectName
 

Detailed Description

template<typename DataClassType, typename ErrorClassType>
class QtRestClient::GenericRestReply< Paging< DataClassType >, ErrorClassType >

A class to handle generic replies for generic requests.

Note
This class is a simple specialization for paging types. It behaves the same as a normal GenericRestReply, however, it allows you to create replies with paging logic (using Paging<>). Of cause, the DataClassType, as generic parameter for the Paging, must fullfill the same restrictions as for the normal one. Paging allows you to only get a part of a list form the server, and allows you to iterate over those results.
Template Parameters
DataClassTypeThe type of the positive result
ErrorClassTypeThe type of the negative result

This class is an extension to the RestReply, that includes deserialization into the reply. This way, you can directly use them without ever caring about the CBOR/JSON in the background.

See also
RestReply, RestClass

Definition at line 133 of file genericrestreply.h.

Constructor & Destructor Documentation

◆ GenericRestReply() [1/2]

template<typename DataClassType , typename ErrorClassType >
QtRestClient::GenericRestReply< Paging< DataClassType >, ErrorClassType >::GenericRestReply ( QNetworkReply networkReply,
RestClient client,
QObject parent = nullptr 
)

Creates a generic reply based on a network reply and for a client.

Definition at line 376 of file genericrestreply.h.

◆ GenericRestReply() [2/2]

template<typename DataClassType , typename ErrorClassType >
QtRestClient::GenericRestReply< Paging< DataClassType >, ErrorClassType >::GenericRestReply ( const QFuture< QNetworkReply * > &  networkReplyFuture,
RestClient client,
QObject parent = nullptr 
)

Creates a generic reply based on a network reply future and for a client.

Definition at line 382 of file genericrestreply.h.

Member Function Documentation

◆ iterate() [1/2]

template<typename DataClassType , typename ErrorClassType >
GenericRestReply< Paging< DataClassType >, ErrorClassType > * QtRestClient::GenericRestReply< Paging< DataClassType >, ErrorClassType >::iterate ( QObject scope,
std::function< bool(DataClassType, qint64)>  iterator,
qint64  to = -1,
qint64  from = 0 
)

shortcut to iterate over all elements via paging objects

Parameters
scope(optional) A scope to limit the callback to
iteratorThe iterator to be used by the Paging objects to iterate over the results
toThe upper limit of how far the iteration should go (-1 means no limit)
fromThe lower limit from where the iteration should start

This method is a shortcut that waits for the reply to succeed and then performs the iteration on the paging object. One advantage of this method is, that it automatically passes the error handlers of this reply onto the iteration. Check the Paging::iterate method for more details

The iterators parameters are:

  • One element of the deserialized Content of the paging replies (DataClassType)
  • The index of the current element (int)
  • returns: true if the iteration should continue, false to cancel it prematurely
See also
Paging::iterate

Definition at line 468 of file genericrestreply.h.

◆ iterate() [2/2]

template<typename DataClassType , typename ErrorClassType >
GenericRestReply< Paging< DataClassType >, ErrorClassType > * QtRestClient::GenericRestReply< Paging< DataClassType >, ErrorClassType >::iterate ( std::function< bool(DataClassType, qint64)>  iterator,
qint64  to = -1,
qint64  from = 0 
)

shortcut to iterate over all elements via paging objects

Parameters
iteratorThe iterator to be used by the Paging objects to iterate over the results
toThe upper limit of how far the iteration should go (-1 means no limit)
fromThe lower limit from where the iteration should start

This method is a shortcut that waits for the reply to succeed and then performs the iteration on the paging object. One advantage of this method is, that it automatically passes the error handlers of this reply onto the iteration. Check the Paging::iterate method for more details

The iterators parameters are:

  • One element of the deserialized Content of the paging replies (DataClassType)
  • The index of the current element (int)
  • returns: true if the iteration should continue, false to cancel it prematurely
See also
Paging::iterate

Definition at line 442 of file genericrestreply.h.

◆ onError()

template<typename DataClassType , typename ErrorClassType >
GenericRestReply< Paging< DataClassType >, ErrorClassType > * QtRestClient::GenericRestReply< Paging< DataClassType >, ErrorClassType >::onError ( QObject scope,
std::function< void(QString, int, RestReply::Error)>  handler 
)
finalvirtual

Set a handler to be called if a network error or json parse error occures.

Parameters
scopeA scope to limit the callback to
handlerThe function to be called on a network/json error
Returns
A reference to this reply

The handlers arguments are:

See also
RestReply::onAllErrors, GenericRestReply::onAllErrors

Reimplemented from QtRestClient::GenericRestReplyBase< Paging< DataClassType >, ErrorClassType >.

Definition at line 484 of file genericrestreply.h.

◆ onFailed()

template<typename DataClassType , typename ErrorClassType >
GenericRestReply< Paging< DataClassType >, ErrorClassType > * QtRestClient::GenericRestReply< Paging< DataClassType >, ErrorClassType >::onFailed ( QObject scope,
std::function< void(int, ErrorClassType)>  handler 
)
finalvirtual

Set a handler to be called if the request failed.

Parameters
scopeA scope to limit the callback to
handlerThe function to be called on failure
Returns
A reference to this reply

The handlers arguments are:

  • The HTTP-Status code (int)
  • The deserialized Content of the reply (ErrorClassType)
See also
GenericRestReply::onAllErrors, GenericRestReply::onSucceeded, RestReply::onFailed

Reimplemented from QtRestClient::GenericRestReplyBase< Paging< DataClassType >, ErrorClassType >.

Definition at line 477 of file genericrestreply.h.

◆ onSucceeded() [1/2]

template<typename DataClassType , typename ErrorClassType >
GenericRestReply< Paging< DataClassType >, ErrorClassType > * QtRestClient::GenericRestReply< Paging< DataClassType >, ErrorClassType >::onSucceeded ( QObject scope,
std::function< void(int, Paging< DataClassType >   
)

Set a handler to be called if the request succeeded.

Parameters
scopeA scope to limit the callback to
handlerThe function to be called on success
Returns
A reference to this reply

The handlers arguments are:

  • The HTTP-Status code (int)
  • The deserialized Content of the reply (DataClassType)
See also
GenericRestReply::onFailed, RestReply::onSucceeded

Definition at line 394 of file genericrestreply.h.

◆ onSucceeded() [2/2]

template<typename DataClassType , typename ErrorClassType >
GenericRestReply< Paging< DataClassType >, ErrorClassType > * QtRestClient::GenericRestReply< Paging< DataClassType >, ErrorClassType >::onSucceeded ( std::function< void(int, Paging< DataClassType >  )

Set a handler to be called if the request succeeded.

Parameters
handlerThe function to be called on success
Returns
A reference to this reply

The handlers arguments are:

  • The HTTP-Status code (int)
  • The deserialized Content of the reply (DataClassType)
See also
GenericRestReply::onFailed, RestReply::onSucceeded

Definition at line 388 of file genericrestreply.h.


The documentation for this class was generated from the following file: