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;
293 [[nodiscard]] ParamsMultiMap queryParameters()
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(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;
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<QAnyStringView,
Upload *> uploadsMap() const;
445 [[nodiscard]] Uploads uploads(QAnyStringView name) const;
452 [[nodiscard]] inline
Upload *upload(QAnyStringView 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(QAnyStringView 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(QAnyStringView 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.