5#ifndef CUTELYST_REQUEST_H
6#define CUTELYST_REQUEST_H
8#include <Cutelyst/cutelyst_export.h>
9#include <Cutelyst/headers.h>
10#include <Cutelyst/paramsmultimap.h>
12#include <QtCore/qobject.h>
13#include <QtCore/qstringlist.h>
41class CUTELYST_EXPORT
Request final :
public QObject
44 Q_PROPERTY(QString hostname READ hostname CONSTANT)
45 Q_PROPERTY(quint16 port READ port CONSTANT)
46 Q_PROPERTY(QUrl uri READ uri CONSTANT)
47 Q_PROPERTY(QString base READ base CONSTANT)
48 Q_PROPERTY(QString path READ path CONSTANT)
49 Q_PROPERTY(QString match READ match CONSTANT)
50 Q_PROPERTY(QStringList arguments READ arguments CONSTANT)
51 Q_PROPERTY(QStringList args READ arguments CONSTANT)
52 Q_PROPERTY(
bool secure READ secure CONSTANT)
53 Q_PROPERTY(QVariant bodyData READ bodyData CONSTANT)
56 Q_PROPERTY(QByteArray contentEncoding READ contentEncoding CONSTANT)
57 Q_PROPERTY(QByteArray contentType READ contentType CONSTANT)
58 Q_PROPERTY(QByteArray method READ method CONSTANT)
59 Q_PROPERTY(QByteArray protocol READ protocol CONSTANT)
60 Q_PROPERTY(QByteArray userAgent READ userAgent CONSTANT)
61 Q_PROPERTY(QByteArray referer READ referer CONSTANT)
62 Q_PROPERTY(QString remoteUser READ remoteUser CONSTANT)
72 [[nodiscard]] QHostAddress
address()
const noexcept;
92 [[nodiscard]] QString hostname()
const;
97 [[nodiscard]] quint16 port()
const noexcept;
103 [[nodiscard]] QUrl uri()
const;
114 [[nodiscard]] QString base()
const;
120 [[nodiscard]] QString path()
const noexcept;
127 [[nodiscard]] QString match()
const noexcept;
133 void setMatch(
const QString &match);
151 [[nodiscard]] QStringList arguments()
const noexcept;
162 [[nodiscard]]
inline QStringList args()
const noexcept;
167 [[nodiscard]] QStringList
captures()
const noexcept;
182 [[nodiscard]]
bool secure()
const noexcept;
189 [[nodiscard]] QIODevice *
body()
const noexcept;
204 [[nodiscard]] QVariant bodyData()
const;
210 [[nodiscard]] QCborValue
bodyCbor()
const;
246 [[nodiscard]]
inline QString
bodyParameter(
const QString &key,
247 const QString &defaultValue = {})
const;
254 [[nodiscard]] QStringList
bodyParameters(
const QString &key)
const;
264 [[nodiscard]]
inline QString
bodyParam(
const QString &key,
265 const QString &defaultValue = {})
const;
272 [[nodiscard]]
inline QStringList bodyParams(
const QString &key)
const;
300 const QString &defaultValue = {})
const;
318 [[nodiscard]]
inline QString
queryParam(
const QString &key,
319 const QString &defaultValue = {})
const;
326 [[nodiscard]]
inline QStringList queryParams(
const QString &key)
const;
331 [[nodiscard]]
inline QByteArray contentEncoding()
const noexcept;
336 [[nodiscard]]
inline QByteArray contentType()
const;
346 [[nodiscard]] QByteArray
cookie(QAnyStringView name)
const;
353 [[nodiscard]] QByteArrayList
cookies(QAnyStringView name)
const;
358 [[nodiscard]] QMultiMap<QAnyStringView, Cookie>
cookies()
const;
363 [[nodiscard]]
inline QByteArray
header(QAnyStringView key)
const noexcept;
373 [[nodiscard]] QByteArray method() const noexcept;
378 [[nodiscard]]
bool isPost() const noexcept;
383 [[nodiscard]]
bool isGet() const noexcept;
388 [[nodiscard]]
bool isHead() const noexcept;
393 [[nodiscard]]
bool isPut() const noexcept;
398 [[nodiscard]]
bool isPatch() const noexcept;
403 [[nodiscard]]
bool isDelete() const noexcept;
408 [[nodiscard]] QByteArray protocol() const noexcept;
414 [[nodiscard]]
bool xhr() const noexcept;
419 [[nodiscard]] inline QByteArray userAgent() const noexcept;
424 [[nodiscard]] inline QByteArray referer() const noexcept;
429 [[nodiscard]] QString remoteUser() const noexcept;
445 [[nodiscard]] Uploads
uploads(QAnyStringView name) const;
452 [[nodiscard]] inline
Upload *
upload(QAnyStringView name) const;
478 bool append = false) const;
546 RequestPrivate *d_ptr;
549 friend class Application;
550 friend class Dispatcher;
551 friend class DispatchType;
552 friend class Context;
556inline QStringList
Request::args() const noexcept
576inline QStringList Request::bodyParams(
const QString &key)
const
596inline QStringList Request::queryParams(
const QString &key)
const
601inline QByteArray Request::contentEncoding() const noexcept
603 return headers().contentEncoding();
606inline QByteArray Request::contentType()
const
608 return headers().contentType();
616inline QByteArray Request::userAgent() const noexcept
621inline QByteArray Request::referer() const noexcept
QVariantMap bodyParametersVariant() const
QCborValue bodyCbor() const
void webSocketBinaryMessage(const QByteArray &message, Cutelyst::Context *c)
Emitted when the websocket receives a binary message, this accounts for all binary frames till the la...
QVariantMap queryParametersVariant() const
QString queryParameter(const QString &key, const QString &defaultValue={}) const
QString addressString() const
void webSocketBinaryFrame(const QByteArray &message, bool isLastFrame, Cutelyst::Context *c)
Emitted when the websocket receives a binary frame, this is usefull for parsing big chunks of data wi...
bool isGet() const noexcept
QString queryKeywords() const
QString bodyParameter(const QString &key, const QString &defaultValue={}) const
QVector< Upload * > uploads() const
ParamsMultiMap bodyParameters() const
QJsonArray bodyJsonArray() const
bool xhr() const noexcept
QJsonObject bodyJsonObject() const
QStringList captures() const noexcept
QByteArrayList cookies(QAnyStringView name) const
bool isPut() const noexcept
bool isDelete() const noexcept
QMultiMap< QAnyStringView, Upload * > uploadsMap() const
QUrl uriWith(const ParamsMultiMap &args, bool append=false) const
bool isPost() const noexcept
void webSocketTextFrame(const QString &message, bool isLastFrame, Cutelyst::Context *c)
Emitted when the websocket receives a text frame, this is usefull for parsing big chunks of data with...
void webSocketPong(const QByteArray &payload, Cutelyst::Context *c)
Emitted when the websocket receives a pong frame, which might include a payload.
void webSocketClosed(quint16 closeCode, const QString &reason)
Emitted when the websocket receives a close frame, including a close code and a reason,...
QJsonDocument bodyJsonDocument() const
ParamsMultiMap mangleParams(const ParamsMultiMap &args, bool append=false) const
void setCaptures(const QStringList &captures)
QByteArray header(QAnyStringView key) const noexcept
void webSocketTextMessage(const QString &message, Cutelyst::Context *c)
Emitted when the websocket receives a text message, this accounts for all text frames till the last o...
Headers headers() const noexcept
QIODevice * body() const noexcept
ParamsMultiMap queryParameters() const
QString queryParam(const QString &key, const QString &defaultValue={}) const
bool isPatch() const noexcept
Engine * engine() const noexcept
QString bodyParam(const QString &key, const QString &defaultValue={}) const
QByteArray cookie(QAnyStringView name) const
Request(EngineRequest *engineRequest)
bool isHead() const noexcept
void setArguments(const QStringList &arguments)
Upload * upload(QAnyStringView name) const
QHostAddress address() const noexcept
void setMatch(const QString &match)
Cutelyst Upload handles file upload requests.
QVector< Upload * > Uploads
QMultiMap< QString, QString > ParamsMultiMap
The Cutelyst namespace holds all public Cutelyst API.