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;
83 [[nodiscard]] QString addressString()
const;
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;
157 void setArguments(
const QStringList &arguments);
162 [[nodiscard]]
inline QStringList args()
const noexcept;
167 [[nodiscard]] QStringList captures()
const noexcept;
173 void setCaptures(
const QStringList &captures);
182 [[nodiscard]]
bool secure()
const noexcept;
189 [[nodiscard]] QIODevice *body()
const noexcept;
204 [[nodiscard]] QVariant bodyData()
const;
210 [[nodiscard]] QCborValue bodyCbor()
const;
216 [[nodiscard]] QJsonDocument bodyJsonDocument()
const;
222 [[nodiscard]] QJsonObject bodyJsonObject()
const;
228 [[nodiscard]] QJsonArray bodyJsonArray()
const;
235 [[nodiscard]] QVariantMap bodyParametersVariant()
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;
281 [[nodiscard]] QString queryKeywords()
const;
288 [[nodiscard]] QVariantMap queryParametersVariant()
const;
299 [[nodiscard]]
inline QString queryParameter(
const QString &key,
300 const QString &defaultValue = {})
const;
307 [[nodiscard]] QStringList queryParameters(
const QString &key)
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(QByteArrayView name)
const;
353 [[nodiscard]] QByteArrayList cookies(QByteArrayView name)
const;
358 [[nodiscard]] QMultiMap<QByteArrayView, Cookie> cookies()
const;
363 [[nodiscard]]
inline QByteArray header(QByteArrayView key)
const noexcept;
368 [[nodiscard]]
Headers headers() 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;
434 [[nodiscard]] QVector<
Upload *> uploads() const;
440 [[nodiscard]] QMultiMap<QStringView,
Upload *> uploadsMap() const;
445 [[nodiscard]] Uploads uploads(QStringView name) const;
452 [[nodiscard]] inline
Upload *upload(QStringView name) const;
478 bool append = false) const;
493 [[nodiscard]] QUrl uriWith(const
ParamsMultiMap &args,
bool append = false) const;
498 [[nodiscard]]
Engine *engine() const noexcept;
510 void webSocketTextFrame(const QString &message,
bool isLastFrame,
Cutelyst::
Context *c);
522 void webSocketBinaryFrame(const QByteArray &message,
bool isLastFrame,
Cutelyst::
Context *c);
543 void webSocketClosed(quint16 closeCode, const QString &reason);
546 RequestPrivate *d_ptr;
556inline QStringList
Request::args() const noexcept
561inline QString Request::bodyParameter(
const QString &key,
const QString &defaultValue)
const
563 return bodyParameters().value(key, defaultValue);
568 return bodyParameters();
571inline QString Request::bodyParam(
const QString &key,
const QString &defaultValue)
const
573 return bodyParameters().value(key, defaultValue);
576inline QStringList Request::bodyParams(
const QString &key)
const
578 return bodyParameters(key);
581inline QString Request::queryParameter(
const QString &key,
const QString &defaultValue)
const
583 return queryParameters().value(key, defaultValue);
588 return queryParameters();
591inline QString Request::queryParam(
const QString &key,
const QString &defaultValue)
const
593 return queryParameters().value(key, defaultValue);
596inline QStringList Request::queryParams(
const QString &key)
const
598 return queryParameters(key);
601inline QByteArray Request::contentEncoding() const noexcept
603 return headers().contentEncoding();
606inline QByteArray Request::contentType()
const
608 return headers().contentType();
611inline QByteArray Request::header(QByteArrayView key)
const noexcept
613 return headers().header(key);
616inline QByteArray Request::userAgent() const noexcept
618 return headers().userAgent();
621inline QByteArray Request::referer() const noexcept
623 return headers().referer();
626inline Upload *Request::upload(QStringView name)
const
628 return uploadsMap().value(name);
The Cutelyst application.
Abstract class to described a dispatch type.
Cutelyst Upload handles file upload requests.
QVector< Upload * > Uploads
QMultiMap< QString, QString > ParamsMultiMap
The Cutelyst namespace holds all public Cutelyst API.