cutelyst 3.9.1
A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework.
request.h
1/*
2 * SPDX-FileCopyrightText: (C) 2013-2022 Daniel Nicoletti <dantti12@gmail.com>
3 * SPDX-License-Identifier: BSD-3-Clause
4 */
5#ifndef CUTELYST_REQUEST_H
6#define CUTELYST_REQUEST_H
7
8#include <Cutelyst/cutelyst_global.h>
9#include <Cutelyst/headers.h>
10#include <Cutelyst/paramsmultimap.h>
11
12#include <QtCore/qobject.h>
13#include <QtCore/qstringlist.h>
14
15class QIODevice;
16class QHostAddress;
17
18namespace Cutelyst {
19
20class Engine;
21class Upload;
22class Context;
23
26
27class EngineRequest;
28class RequestPrivate;
29class CUTELYST_LIBRARY Request final : public QObject
30{
32 Q_PROPERTY(QString hostname READ hostname CONSTANT)
33 Q_PROPERTY(quint16 port READ port CONSTANT)
34 Q_PROPERTY(QUrl uri READ uri CONSTANT)
35 Q_PROPERTY(QString base READ base CONSTANT)
36 Q_PROPERTY(QString path READ path CONSTANT)
37 Q_PROPERTY(QString match READ match CONSTANT)
38 Q_PROPERTY(QStringList arguments READ arguments CONSTANT)
39 Q_PROPERTY(QStringList args READ arguments CONSTANT)
40 Q_PROPERTY(bool secure READ secure CONSTANT)
41 Q_PROPERTY(QVariant bodyData READ bodyData CONSTANT)
42 Q_PROPERTY(Cutelyst::ParamsMultiMap bodyParams READ bodyParameters CONSTANT)
43 Q_PROPERTY(Cutelyst::ParamsMultiMap queryParams READ queryParameters CONSTANT)
44 Q_PROPERTY(QString contentEncoding READ contentEncoding CONSTANT)
45 Q_PROPERTY(QString contentType READ contentType CONSTANT)
46 Q_PROPERTY(QString method READ method CONSTANT)
47 Q_PROPERTY(QString protocol READ protocol CONSTANT)
48 Q_PROPERTY(QString userAgent READ userAgent CONSTANT)
49 Q_PROPERTY(QString referer READ referer CONSTANT)
50 Q_PROPERTY(QString remoteUser READ remoteUser CONSTANT)
51public:
52 virtual ~Request();
53
57 QHostAddress address() const noexcept;
58
68 QString addressString() const;
69
77 QString hostname() const;
78
82 quint16 port() const;
83
88 QUrl uri() const;
89
99 QString base() const;
100
106 QString path() const noexcept;
107
113 QString match() const noexcept;
114
119 void setMatch(const QString &match);
120
137 QStringList arguments() const noexcept;
138
143 void setArguments(const QStringList &arguments);
144
148 inline QStringList args() const;
149
153 QStringList captures() const noexcept;
154
159 void setCaptures(const QStringList &captures);
160
168 bool secure() const noexcept;
169
175 QIODevice *body() const;
176
190 QVariant bodyData() const;
191
197
203
209
215 QVariantMap bodyParametersVariant() const;
216
222
226 inline QString bodyParameter(const QString &key, const QString &defaultValue = {}) const;
227
233 QStringList bodyParameters(const QString &key) const;
234
238 inline ParamsMultiMap bodyParams() const;
239
243 inline QString bodyParam(const QString &key, const QString &defaultValue = {}) const;
244
250 inline QStringList bodyParams(const QString &key) const;
251
259 QString queryKeywords() const;
260
266 QVariantMap queryParametersVariant() const;
267
272
277 inline QString queryParameter(const QString &key, const QString &defaultValue = {}) const;
278
284 QStringList queryParameters(const QString &key) const;
285
289 inline ParamsMultiMap queryParams() const;
290
295 inline QString queryParam(const QString &key, const QString &defaultValue = {}) const;
296
302 inline QStringList queryParams(const QString &key) const;
303
307 inline QString contentEncoding() const;
308
312 inline QString contentType() const;
313
317 QString cookie(const QString &name) const;
318
324 QStringList cookies(const QString &name) const;
325
329 ParamsMultiMap cookies() const;
330
334 inline QString header(const QString &key) const;
335
339 Headers headers() const noexcept;
340
344 QString method() const noexcept;
345
349 bool isPost() const noexcept;
350
354 bool isGet() const noexcept;
355
359 bool isHead() const noexcept;
360
364 bool isPut() const noexcept;
365
369 bool isPatch() const noexcept;
370
374 bool isDelete() const noexcept;
375
379 QString protocol() const noexcept;
380
385 bool xhr() const noexcept;
386
390 inline QString userAgent() const;
391
395 inline QString referer() const;
396
400 QString remoteUser() const noexcept;
401
406
412
416 Uploads uploads(const QString &name) const;
417
423 inline Upload *upload(const QString &name) const;
424
448 ParamsMultiMap mangleParams(const ParamsMultiMap &args, bool append = false) const;
449
463 QUrl uriWith(const ParamsMultiMap &args, bool append = false) const;
464
468 Engine *engine() const noexcept;
469
473 Request(EngineRequest *engineRequest);
474
480 void webSocketTextFrame(const QString &message, bool isLastFrame, Cutelyst::Context *c);
481
487
492 void webSocketBinaryFrame(const QByteArray &message, bool isLastFrame, Cutelyst::Context *c);
493
499
504
513 void webSocketClosed(quint16 closeCode, const QString &reason);
514
515protected:
516 RequestPrivate *d_ptr;
517
518private:
519 friend class Application;
520 friend class Dispatcher;
521 friend class DispatchType;
522 friend class Context;
523 Q_DECLARE_PRIVATE(Request)
524};
525
527{
528 return arguments();
529}
530
531inline QString Request::bodyParameter(const QString &key, const QString &defaultValue) const
532{
533 return bodyParameters().value(key, defaultValue);
534}
535
537{
538 return bodyParameters();
539}
540
541inline QString Request::bodyParam(const QString &key, const QString &defaultValue) const
542{
543 return bodyParameters().value(key, defaultValue);
544}
545
547{
548 return bodyParameters(key);
549}
550
551inline QString Request::queryParameter(const QString &key, const QString &defaultValue) const
552{
553 return queryParameters().value(key, defaultValue);
554}
555
557{
558 return queryParameters();
559}
560
561inline QString Request::queryParam(const QString &key, const QString &defaultValue) const
562{
563 return queryParameters().value(key, defaultValue);
564}
565
567{
568 return queryParameters(key);
569}
570
572{
573 return headers().contentEncoding();
574}
575
577{
578 return headers().contentType();
579}
580
581inline QString Request::header(const QString &key) const
582{
583 return headers().header(key);
584}
585
587{
588 return headers().userAgent();
589}
590
592{
593 return headers().referer();
594}
595
596inline Upload *Request::upload(const QString &name) const
597{
598 return uploadsMap().value(name);
599}
600
601} // namespace Cutelyst
602
603#endif // CUTELYST_REQUEST_H
The Cutelyst Context.
Definition context.h:39
The Cutelyst Engine.
Definition engine.h:21
QString contentEncoding() const
Definition headers.cpp:48
QString referer() const
Definition headers.cpp:306
QString userAgent() const
Definition headers.cpp:301
QString header(const QString &field) const
Definition headers.cpp:386
QString contentType() const
Definition headers.cpp:58
QMultiMap< QString, Upload * > uploadsMap() const
Definition request.cpp:386
QVariantMap bodyParametersVariant() const
Definition request.cpp:211
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
Definition request.cpp:247
QString queryParameter(const QString &key, const QString &defaultValue={}) const
Definition request.h:551
QString addressString() const
Definition request.cpp:39
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
Definition request.cpp:328
QString queryKeywords() const
Definition request.cpp:238
QString bodyParameter(const QString &key, const QString &defaultValue={}) const
Definition request.h:531
QVector< Upload * > uploads() const
Definition request.cpp:377
QString header(const QString &key) const
Definition request.h:581
ParamsMultiMap bodyParameters() const
Definition request.cpp:216
QString referer() const
Definition request.h:591
QJsonArray bodyJsonArray() const
Definition request.cpp:206
bool xhr() const noexcept
Definition request.cpp:364
QJsonObject bodyJsonObject() const
Definition request.cpp:201
ParamsMultiMap queryParams() const
Definition request.h:556
QStringList captures() const noexcept
Definition request.cpp:163
bool isPut() const noexcept
Definition request.cpp:340
bool isDelete() const noexcept
Definition request.cpp:352
QUrl uriWith(const ParamsMultiMap &args, bool append=false) const
Definition request.cpp:422
bool isPost() const noexcept
Definition request.cpp:322
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,...
ParamsMultiMap bodyParams() const
Definition request.h:536
QStringList args() const
Definition request.h:526
QJsonDocument bodyJsonDocument() const
Definition request.cpp:196
ParamsMultiMap mangleParams(const ParamsMultiMap &args, bool append=false) const
Definition request.cpp:406
void setCaptures(const QStringList &captures)
Definition request.cpp:169
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
Definition request.cpp:310
QStringList cookies(const QString &name) const
Definition request.cpp:284
ParamsMultiMap queryParameters() const
Definition request.cpp:252
QString queryParam(const QString &key, const QString &defaultValue={}) const
Definition request.h:561
QIODevice * body() const
Definition request.cpp:181
QString cookie(const QString &name) const
Definition request.cpp:274
bool isPatch() const noexcept
Definition request.cpp:346
Engine * engine() const noexcept
Definition request.cpp:437
QString bodyParam(const QString &key, const QString &defaultValue={}) const
Definition request.h:541
Request(EngineRequest *engineRequest)
Definition request.cpp:19
QString contentEncoding() const
Definition request.h:571
bool isHead() const noexcept
Definition request.cpp:334
void setArguments(const QStringList &arguments)
Definition request.cpp:157
QStringList arguments() const noexcept
Definition request.cpp:151
QHostAddress address() const noexcept
Definition request.cpp:33
QString contentType() const
Definition request.h:576
Upload * upload(const QString &name) const
Definition request.h:596
void setMatch(const QString &match)
Definition request.cpp:145
QString userAgent() const
Definition request.h:586
Cutelyst Upload handles file upload request
Definition upload.h:23
The Cutelyst namespace holds all public Cutelyst API.
Definition Mainpage.dox:8
QVector< Upload * > Uploads
Definition request.h:25
QMultiMap< QString, QString > ParamsMultiMap
QObject(QObject *parent)
Q_OBJECTQ_OBJECT
Q_PROPERTY(...)
Q_SIGNALSQ_SIGNALS