5#ifndef CUTELYST_REQUEST_H
6#define CUTELYST_REQUEST_H
8#include <Cutelyst/cutelyst_global.h>
9#include <Cutelyst/headers.h>
10#include <Cutelyst/paramsmultimap.h>
12#include <QtCore/qobject.h>
13#include <QtCore/qstringlist.h>
30class CUTELYST_LIBRARY
Request final :
public QObject
33 Q_PROPERTY(QString hostname READ hostname CONSTANT)
34 Q_PROPERTY(quint16 port READ port CONSTANT)
35 Q_PROPERTY(QUrl uri READ uri CONSTANT)
36 Q_PROPERTY(QString base READ base CONSTANT)
37 Q_PROPERTY(QString path READ path CONSTANT)
38 Q_PROPERTY(QString match READ match CONSTANT)
39 Q_PROPERTY(QStringList arguments READ arguments CONSTANT)
40 Q_PROPERTY(QStringList args READ arguments CONSTANT)
41 Q_PROPERTY(
bool secure READ secure CONSTANT)
42 Q_PROPERTY(QVariant bodyData READ bodyData CONSTANT)
45 Q_PROPERTY(QByteArray contentEncoding READ contentEncoding CONSTANT)
46 Q_PROPERTY(QByteArray contentType READ contentType CONSTANT)
47 Q_PROPERTY(QByteArray method READ method CONSTANT)
48 Q_PROPERTY(QByteArray protocol READ protocol CONSTANT)
49 Q_PROPERTY(QByteArray userAgent READ userAgent CONSTANT)
50 Q_PROPERTY(QByteArray referer READ referer CONSTANT)
51 Q_PROPERTY(QString remoteUser READ remoteUser CONSTANT)
58 [[nodiscard]] QHostAddress address()
const noexcept;
69 [[nodiscard]] QString addressString()
const;
78 [[nodiscard]] QString hostname()
const;
83 [[nodiscard]] quint16 port()
const noexcept;
89 [[nodiscard]] QUrl uri()
const;
100 [[nodiscard]] QString base()
const;
107 [[nodiscard]] QString path()
const noexcept;
114 [[nodiscard]] QString match()
const noexcept;
120 void setMatch(
const QString &match);
138 [[nodiscard]] QStringList arguments()
const noexcept;
144 void setArguments(
const QStringList &arguments);
149 [[nodiscard]]
inline QStringList args()
const noexcept;
154 [[nodiscard]] QStringList captures()
const noexcept;
160 void setCaptures(
const QStringList &captures);
169 [[nodiscard]]
bool secure()
const noexcept;
176 [[nodiscard]] QIODevice *body()
const noexcept;
191 [[nodiscard]] QVariant bodyData()
const;
197 [[nodiscard]] QJsonDocument bodyJsonDocument()
const;
203 [[nodiscard]] QJsonObject bodyJsonObject()
const;
209 [[nodiscard]] QJsonArray bodyJsonArray()
const;
216 [[nodiscard]] QVariantMap bodyParametersVariant()
const;
227 [[nodiscard]]
inline QString bodyParameter(
const QString &key,
228 const QString &defaultValue = {})
const;
235 [[nodiscard]] QStringList bodyParameters(
const QString &key)
const;
245 [[nodiscard]]
inline QString bodyParam(
const QString &key,
246 const QString &defaultValue = {})
const;
253 [[nodiscard]]
inline QStringList bodyParams(
const QString &key)
const;
262 [[nodiscard]] QString queryKeywords()
const;
269 [[nodiscard]] QVariantMap queryParametersVariant()
const;
280 [[nodiscard]]
inline QString queryParameter(
const QString &key,
281 const QString &defaultValue = {})
const;
288 [[nodiscard]] QStringList queryParameters(
const QString &key)
const;
299 [[nodiscard]]
inline QString queryParam(
const QString &key,
300 const QString &defaultValue = {})
const;
307 [[nodiscard]]
inline QStringList queryParams(
const QString &key)
const;
312 [[nodiscard]]
inline QByteArray contentEncoding()
const noexcept;
317 [[nodiscard]]
inline QByteArray contentType()
const;
327 [[nodiscard]] QByteArray cookie(QByteArrayView name)
const;
334 [[nodiscard]] QByteArrayList cookies(QByteArrayView name)
const;
339 [[nodiscard]] QMultiMap<QByteArrayView, Cookie> cookies()
const;
344 [[nodiscard]]
inline QByteArray header(QByteArrayView key)
const noexcept;
349 [[nodiscard]]
Headers headers() const noexcept;
354 [[nodiscard]] QByteArray method() const noexcept;
359 [[nodiscard]]
bool isPost() const noexcept;
364 [[nodiscard]]
bool isGet() const noexcept;
369 [[nodiscard]]
bool isHead() const noexcept;
374 [[nodiscard]]
bool isPut() const noexcept;
379 [[nodiscard]]
bool isPatch() const noexcept;
384 [[nodiscard]]
bool isDelete() const noexcept;
389 [[nodiscard]] QByteArray protocol() const noexcept;
395 [[nodiscard]]
bool xhr() const noexcept;
400 [[nodiscard]] inline QByteArray userAgent() const noexcept;
405 [[nodiscard]] inline QByteArray referer() const noexcept;
410 [[nodiscard]] QString remoteUser() const noexcept;
415 [[nodiscard]] QVector<
Upload *> uploads() const;
421 [[nodiscard]] QMultiMap<QStringView,
Upload *> uploadsMap() const;
426 [[nodiscard]]
Uploads uploads(QStringView name) const;
433 [[nodiscard]] inline
Upload *upload(QStringView name) const;
459 bool append = false) const;
474 [[nodiscard]] QUrl uriWith(const
ParamsMultiMap &args,
bool append = false) const;
479 [[nodiscard]]
Engine *engine() const noexcept;
491 void webSocketTextFrame(const QString &message,
bool isLastFrame,
Cutelyst::
Context *c);
503 void webSocketBinaryFrame(const QByteArray &message,
bool isLastFrame,
Cutelyst::
Context *c);
524 void webSocketClosed(quint16 closeCode, const QString &reason);
527 RequestPrivate *d_ptr;
537inline QStringList
Request::args() const noexcept
542inline QString Request::bodyParameter(
const QString &key,
const QString &defaultValue)
const
544 return bodyParameters().value(key, defaultValue);
549 return bodyParameters();
552inline QString Request::bodyParam(
const QString &key,
const QString &defaultValue)
const
554 return bodyParameters().value(key, defaultValue);
557inline QStringList Request::bodyParams(
const QString &key)
const
559 return bodyParameters(key);
562inline QString Request::queryParameter(
const QString &key,
const QString &defaultValue)
const
564 return queryParameters().value(key, defaultValue);
569 return queryParameters();
572inline QString Request::queryParam(
const QString &key,
const QString &defaultValue)
const
574 return queryParameters().value(key, defaultValue);
577inline QStringList Request::queryParams(
const QString &key)
const
579 return queryParameters(key);
582inline QByteArray Request::contentEncoding() const noexcept
584 return headers().contentEncoding();
587inline QByteArray Request::contentType()
const
589 return headers().contentType();
592inline QByteArray Request::header(QByteArrayView key)
const noexcept
594 return headers().header(key);
597inline QByteArray Request::userAgent() const noexcept
599 return headers().userAgent();
602inline QByteArray Request::referer() const noexcept
604 return headers().referer();
607inline Upload *Request::upload(QStringView name)
const
609 return uploadsMap().value(name);
The Cutelyst Application.
Cutelyst Upload handles file upload request
The Cutelyst namespace holds all public Cutelyst API.
QVector< Upload * > Uploads
QMultiMap< QString, QString > ParamsMultiMap