|
cutelyst 3.9.1
A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework.
|

Public Types | |
| enum | CloseCode { CloseCodeNormal , CloseCodeGoingAway , CloseCodeProtocolError , CloseCodeDatatypeNotSupported , CloseCodeReserved1004 , CloseCodeMissingStatusCode , CloseCodeAbnormalDisconnection , CloseCodeWrongDatatype , CloseCodePolicyViolated , CloseCodeTooMuchData , CloseCodeMissingExtension , CloseCodeBadOperation , CloseCodeTlsHandshakeFailed } |
| enum | HttpStatus { Continue , SwitchingProtocols , OK , Created , Accepted , NonAuthoritativeInformation , NoContent , ResetContent , PartialContent , MultiStatus , MultipleChoices , MovedPermanently , Found , SeeOther , NotModified , UseProxy , TemporaryRedirect , PermanentRedirect , BadRequest , Unauthorized , PaymentRequired , Forbidden , NotFound , MethodNotAllowed , NotAcceptable , ProxyAuthenticationRequired , RequestTimeout , Conflict , Gone , LengthRequired , PreconditionFailed , RequestEntityTooLarge , RequestURITooLong , UnsupportedMediaType , RequestedRangeNotSatisfiable , ExpectationFailed , InternalServerError , NotImplemented , BadGateway , ServiceUnavailable , GatewayTimeout , HTTPVersionNotSupported , BandwidthLimitExceeded } |
| Public Types inherited from QIODevice | |
| enum | OpenModeFlag |
Public Member Functions | |
| Q_REQUIRED_RESULT QByteArray & | body () |
| QIODevice * | bodyDevice () const |
| QString | contentEncoding () const |
| qint64 | contentLength () const |
| QString | contentType () const |
| QString | contentTypeCharset () const |
| QVariant | cookie (const QByteArray &name) const |
| QList< QNetworkCookie > | cookies () const |
| bool | hasBody () const noexcept |
| QString | header (const QString &field) const |
| Headers & | headers () noexcept |
| bool | isFinalizedHeaders () const noexcept |
| virtual bool | isSequential () const noexcept override |
| QUrl | location () const noexcept |
| void | redirect (const QString &url, quint16 status=Found) |
| void | redirect (const QUrl &url, quint16 status=Found) |
| void | redirectSafe (const QUrl &url, const QUrl &fallback) |
| int | removeCookies (const QByteArray &name) |
| void | setBody (const QByteArray &body) |
| void | setBody (const QString &body) |
| void | setBody (QIODevice *body) |
| void | setBody (QStringView body) |
| void | setContentEncoding (const QString &encoding) |
| void | setContentLength (qint64 length) |
| void | setContentType (const QString &type) |
| void | setCookie (const QNetworkCookie &cookie) |
| void | setCookies (const QList< QNetworkCookie > &cookies) |
| void | setHeader (const QString &field, const QString &value) |
| void | setJsonArrayBody (const QJsonArray &array) |
| void | setJsonBody (const QByteArray &json) |
| void | setJsonBody (const QJsonDocument &documment) |
| void | setJsonBody (const QString &json) |
| void | setJsonBody (QStringView json) |
| void | setJsonObjectBody (const QJsonObject &object) |
| void | setStatus (quint16 status) noexcept |
| virtual qint64 | size () const noexcept override |
| quint16 | status () const noexcept |
| bool | webSocketBinaryMessage (const QByteArray &message) |
| Sends a WebSocket binary message. | |
| bool | webSocketClose (quint16 code=Response::CloseCodeNormal, const QString &reason={}) |
| Sends a WebSocket close frame, with both optional close code and a string reason. | |
| bool | webSocketHandshake (const QString &key={}, const QString &origin={}, const QString &protocol={}) |
| Sends the websocket handshake, if no parameters are defined it will use header data. | |
| bool | webSocketPing (const QByteArray &payload={}) |
| Sends a WebSocket ping with an optional payload limited to 125 bytes, which will be truncated if larger. | |
| bool | webSocketTextMessage (const QString &message) |
| Sends a WebSocket text message. | |
| Public Member Functions inherited from QIODevice | |
| QIODevice (QObject *parent) | |
| void | aboutToClose () |
| virtual bool | atEnd () const const |
| virtual qint64 | bytesAvailable () const const |
| virtual qint64 | bytesToWrite () const const |
| void | bytesWritten (qint64 bytes) |
| virtual bool | canReadLine () const const |
| void | channelBytesWritten (int channel, qint64 bytes) |
| void | channelReadyRead (int channel) |
| virtual void | close () |
| void | commitTransaction () |
| int | currentReadChannel () const const |
| int | currentWriteChannel () const const |
| QString | errorString () const const |
| bool | getChar (char *c) |
| bool | isOpen () const const |
| bool | isReadable () const const |
| bool | isTextModeEnabled () const const |
| bool | isTransactionStarted () const const |
| bool | isWritable () const const |
| virtual bool | open (OpenMode mode) |
| OpenMode | openMode () const const |
| qint64 | peek (char *data, qint64 maxSize) |
| QByteArray | peek (qint64 maxSize) |
| virtual qint64 | pos () const const |
| bool | putChar (char c) |
| qint64 | read (char *data, qint64 maxSize) |
| QByteArray | read (qint64 maxSize) |
| QByteArray | readAll () |
| int | readChannelCount () const const |
| void | readChannelFinished () |
| qint64 | readLine (char *data, qint64 maxSize) |
| QByteArray | readLine (qint64 maxSize) |
| void | readyRead () |
| virtual bool | reset () |
| void | rollbackTransaction () |
| virtual bool | seek (qint64 pos) |
| void | setCurrentReadChannel (int channel) |
| void | setCurrentWriteChannel (int channel) |
| void | setTextModeEnabled (bool enabled) |
| qint64 | skip (qint64 maxSize) |
| void | startTransaction () |
| void | ungetChar (char c) |
| virtual bool | waitForBytesWritten (int msecs) |
| virtual bool | waitForReadyRead (int msecs) |
| qint64 | write (const char *data) |
| qint64 | write (const char *data, qint64 maxSize) |
| qint64 | write (const QByteArray &byteArray) |
| int | writeChannelCount () const const |
| Public Member Functions inherited from QObject | |
| QObject (QObject *parent) | |
| bool | blockSignals (bool block) |
| const QObjectList & | children () const const |
| QMetaObject::Connection | connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const |
| void | deleteLater () |
| void | destroyed (QObject *obj) |
| bool | disconnect (const char *signal, const QObject *receiver, const char *method) const const |
| bool | disconnect (const QObject *receiver, const char *method) const const |
| void | dumpObjectInfo () |
| void | dumpObjectInfo () const const |
| void | dumpObjectTree () |
| void | dumpObjectTree () const const |
| QList< QByteArray > | dynamicPropertyNames () const const |
| virtual bool | event (QEvent *e) |
| virtual bool | eventFilter (QObject *watched, QEvent *event) |
| T | findChild (const QString &name, Qt::FindChildOptions options) const const |
| QList< T > | findChildren (const QRegExp ®Exp, Qt::FindChildOptions options) const const |
| QList< T > | findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const |
| QList< T > | findChildren (const QString &name, Qt::FindChildOptions options) const const |
| bool | inherits (const char *className) const const |
| void | installEventFilter (QObject *filterObj) |
| bool | isWidgetType () const const |
| bool | isWindowType () const const |
| void | killTimer (int id) |
| virtual const QMetaObject * | metaObject () const const |
| void | moveToThread (QThread *targetThread) |
| QString | objectName () const const |
| void | objectNameChanged (const QString &objectName, QPrivateSignal) |
| QObject * | parent () const const |
| QVariant | property (const char *name) const const |
| Q_CLASSINFO (Name, Value) | |
| Q_DISABLE_COPY (Class) | |
| Q_DISABLE_COPY_MOVE (Class) | |
| Q_DISABLE_MOVE (Class) | |
| Q_EMIT Q_EMIT | |
| Q_ENUM (...) | |
| Q_ENUM_NS (...) | |
| Q_ENUMS (...) | |
| Q_FLAG (...) | |
| Q_FLAG_NS (...) | |
| Q_FLAGS (...) | |
| Q_GADGET Q_GADGET | |
| Q_INTERFACES (...) | |
| Q_INVOKABLE Q_INVOKABLE | |
| Q_NAMESPACE Q_NAMESPACE | |
| Q_NAMESPACE_EXPORT (EXPORT_MACRO) | |
| Q_OBJECT Q_OBJECT | |
| Q_PROPERTY (...) | |
| Q_REVISION Q_REVISION | |
| Q_SET_OBJECT_NAME (Object) | |
| Q_SIGNAL Q_SIGNAL | |
| Q_SIGNALS Q_SIGNALS | |
| Q_SLOT Q_SLOT | |
| Q_SLOTS Q_SLOTS | |
| T | qFindChild (const QObject *obj, const QString &name) |
| QList< T > | qFindChildren (const QObject *obj, const QRegExp ®Exp) |
| QList< T > | qFindChildren (const QObject *obj, const QString &name) |
| T | qobject_cast (const QObject *object) |
| T | qobject_cast (QObject *object) |
| QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT | |
| void | removeEventFilter (QObject *obj) |
| void | setObjectName (const QString &name) |
| void | setParent (QObject *parent) |
| bool | setProperty (const char *name, const QVariant &value) |
| bool | signalsBlocked () const const |
| int | startTimer (int interval, Qt::TimerType timerType) |
| int | startTimer (std::chrono::milliseconds time, Qt::TimerType timerType) |
| QThread * | thread () const const |
Protected Member Functions | |
| Response (const Headers &defaultHeaders, EngineRequest *conn=nullptr) | |
| virtual qint64 | readData (char *data, qint64 maxlen) override |
| virtual qint64 | writeData (const char *data, qint64 len) override |
| Protected Member Functions inherited from QIODevice | |
| virtual qint64 | readLineData (char *data, qint64 maxSize) |
| void | setErrorString (const QString &str) |
| void | setOpenMode (OpenMode openMode) |
| Protected Member Functions inherited from QObject | |
| virtual void | childEvent (QChildEvent *event) |
| virtual void | connectNotify (const QMetaMethod &signal) |
| virtual void | customEvent (QEvent *event) |
| virtual void | disconnectNotify (const QMetaMethod &signal) |
| bool | isSignalConnected (const QMetaMethod &signal) const const |
| int | receivers (const char *signal) const const |
| QObject * | sender () const const |
| int | senderSignalIndex () const const |
| virtual void | timerEvent (QTimerEvent *event) |
Friends | |
| class | Application |
| class | Context |
| class | ContextPrivate |
| class | Engine |
| class | EngineConnection |
Additional Inherited Members | |
| Static Public Member Functions inherited from QObject | |
| QMetaObject::Connection | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type) |
| QMetaObject::Connection | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type) |
| QMetaObject::Connection | connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type) |
| QMetaObject::Connection | connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type) |
| QMetaObject::Connection | connect (const QObject *sender, PointerToMemberFunction signal, Functor functor) |
| bool | disconnect (const QMetaObject::Connection &connection) |
| bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method) |
| bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method) |
| bool | disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method) |
| QString | tr (const char *sourceText, const char *disambiguation, int n) |
| QString | trUtf8 (const char *sourceText, const char *disambiguation, int n) |
| Public Attributes inherited from QIODevice | |
| Append | |
| ExistingOnly | |
| NewOnly | |
| NotOpen | |
| typedef | OpenMode |
| ReadOnly | |
| ReadWrite | |
| Text | |
| Truncate | |
| Unbuffered | |
| WriteOnly | |
| Public Attributes inherited from QObject | |
| typedef | QObjectList |
| Properties inherited from QObject | |
| objectName | |
Definition at line 24 of file response.h.
This enum type specifies the status response to be sent to the client
Definition at line 78 of file response.h.
This enum type specifies the status response to be sent to the client
Definition at line 30 of file response.h.
|
overridevirtual |
Definition at line 58 of file response.cpp.
|
explicitprotected |
Constructs a Response object, for this engine request and defaultHeaders.
Definition at line 17 of file response.cpp.
References QIODevice::open(), and QIODevice::WriteOnly.
Referenced by body(), bodyDevice(), contentEncoding(), contentLength(), contentType(), contentTypeCharset(), cookie(), cookies(), hasBody(), headers(), location(), redirect(), removeCookies(), setBody(), setBody(), setContentEncoding(), setContentLength(), setCookie(), setCookies(), setJsonArrayBody(), setJsonBody(), setJsonBody(), setJsonBody(), setJsonObjectBody(), setStatus(), size(), status(), webSocketTextMessage(), and writeData().
| QByteArray & Response::body | ( | ) |
This function returns a reference to a QByteArray which implicity sets the body device to a QBuffer, even if one was already set.
Definition at line 83 of file response.cpp.
References Response().
Referenced by Cutelyst::EngineRequest::finalizeBody(), setBody(), setBody(), setJsonArrayBody(), setJsonBody(), and setJsonObjectBody().
| QIODevice * Response::bodyDevice | ( | ) | const |
Returns the body IO device (if any) of this response.
Definition at line 94 of file response.cpp.
References QIODevice::QIODevice(), and Response().
Referenced by Cutelyst::EngineRequest::finalizeBody().
| QString Response::contentEncoding | ( | ) | const |
Short for headers().contentEncoding();
Definition at line 158 of file response.cpp.
References Response().
| qint64 Response::contentLength | ( | ) | const |
Short for headers().contentLength();
Definition at line 175 of file response.cpp.
References Response().
| QString Response::contentType | ( | ) | const |
Short for headers().contentType();
Definition at line 192 of file response.cpp.
References Response().
Referenced by Cutelyst::RenderView::doExecute().
| QString Response::contentTypeCharset | ( | ) | const |
Short for headers().contentTypeCharset();
Definition at line 198 of file response.cpp.
References Response().
| QVariant Response::cookie | ( | const QByteArray & | name | ) | const |
Returns the first QNetworkCookie matching the name or a null QVariant if not found
Definition at line 204 of file response.cpp.
References Response(), and QVariant::fromValue().
Referenced by setCookie(), and setCookies().
| QList< QNetworkCookie > Response::cookies | ( | ) | const |
Returns a list of all cookies set
Definition at line 218 of file response.cpp.
References Response().
Referenced by Cutelyst::EngineRequest::finalizeCookies(), and setCookies().
|
noexcept |
Returns true if a body device has been defined as QByteArray or QIODevice or write() was called and it's on chunked mode
Definition at line 76 of file response.cpp.
References Response().
Referenced by Cutelyst::RenderView::doExecute().
Definition at line 322 of file response.cpp.
|
noexcept |
Returns a reference to the response headers class
Definition at line 339 of file response.cpp.
References Response().
Referenced by Cutelyst::EngineRequest::finalizeCookies(), Cutelyst::EngineRequest::finalizeHeaders(), and setContentType().
|
noexcept |
Returns if Headers are finalized (sent to the client)
Definition at line 345 of file response.cpp.
|
overridevirtualnoexcept |
Writing to user-agent is always sequential
Reimplemented from QIODevice.
Definition at line 351 of file response.cpp.
|
noexcept |
Returns the HTTP location set by the redirect
Definition at line 316 of file response.cpp.
References Response(), QUrl::RemovePath, and QUrl::RemoveQuery.
Referenced by redirect().
|
overrideprotectedvirtual |
Reimplemented from QIODevice::readData().
Implements QIODevice.
Definition at line 23 of file response.cpp.
| void Response::redirect | ( | const QString & | url, |
| quint16 | status = Found ) |
Causes the response to redirect to the specified URL. The default status is 302. This is a convenience method that sets the Location header to the redirect destination, and then sets the response status. You will want to return false or c->detach() to interrupt the normal processing flow if you want the redirect to occur straight away.
Definition at line 300 of file response.cpp.
| void Response::redirect | ( | const QUrl & | url, |
| quint16 | status = Found ) |
Causes the response to redirect to the specified URL. The default status is 302. This is a convenience method that sets the Location header to the redirect destination, and then sets the response status. You will want to return false or c->detach() to interrupt the normal processing flow if you want the redirect to occur straight away.
Definition at line 278 of file response.cpp.
References Response(), QString::fromLatin1(), QUrl::FullyEncoded, QUrl::isValid(), location(), status(), and QUrl::toEncoded().
Referenced by Cutelyst::LangSelect::fromPath().
Open Redirect Vulnerability is when you get an user provided URL and redirect to it without checking if it's safe.
This can be used on login forms that receive some "redir" parameter that once logged in allows the user to go straight to that page instead of some home page.
It's then possible to receive a link like http://example.com/login?redir=http://exemple.com/login notice how both domain names are similar for malicious porpuses, once logged in it redirects to a similar login page that will pretent the auth didn't work, user might then type their credentials on that page.
This method validades that the url scheme, domain name and port are the same of the request to your server if it isn't it will send the user to fallback url that you know it's safe. If you need to redirect the user to some other domain/port validate the URL manually an use the regular
Definition at line 305 of file response.cpp.
References status().
| int Response::removeCookies | ( | const QByteArray & | name | ) |
Removes all cookies that matches name, returning the number of cookies removed
Definition at line 264 of file response.cpp.
References Response().
| void Response::setBody | ( | const QByteArray & | body | ) |
Sets a QByteArray as the response body, content length will be automatically set to it's size.
Definition at line 114 of file response.cpp.
References Response(), and body().
|
inline |
Sets a QString as the response body, the output will be UTF-8 and content length will be automatically set to it's size.
Definition at line 458 of file response.h.
References setBody(), and QString::toUtf8().
| void Response::setBody | ( | QIODevice * | body | ) |
Sets an IO device as the response body, the open mode must be at least QIODevice::ReadOnly. This function takes ownership of your device deleting after the request has completed
Definition at line 100 of file response.cpp.
References QIODevice::QIODevice(), Response(), and body().
Referenced by Cutelyst::EngineRequest::finalizeError(), Cutelyst::CuteleeView::render(), Cutelyst::GrantleeView::render(), setBody(), and setBody().
|
inline |
Sets a QString as the response body, the output will be UTF-8 and content length will be automatically set to it's size.
Definition at line 463 of file response.h.
References setBody(), and QStringView::toUtf8().
| void Cutelyst::Response::setContentEncoding | ( | const QString & | encoding | ) |
Short for headers().setContentEncoding(encoding);
Definition at line 164 of file response.cpp.
References Response().
| void Response::setContentLength | ( | qint64 | length | ) |
Short for headers().setContentLength(length);
Definition at line 181 of file response.cpp.
References Response().
|
inline |
Short for headers().setContentType(type);
Definition at line 220 of file response.h.
References headers(), and setContentType().
Referenced by Cutelyst::RenderView::doExecute(), Cutelyst::EngineRequest::finalizeError(), Cutelyst::ViewJson::render(), and setContentType().
| void Response::setCookie | ( | const QNetworkCookie & | cookie | ) |
Defines a QNetworkCookie to be sent to the user-agent, if a previous cookie->name() was set it will be replaced
Definition at line 232 of file response.cpp.
References Response(), and cookie().
| void Response::setCookies | ( | const QList< QNetworkCookie > & | cookies | ) |
Defines a list of QNetworkCookie to be sent to the user-agent, all previous matches to cookie->name() will be preserved.
Definition at line 246 of file response.cpp.
References Response(), cookie(), and cookies().
Shortcut headers().setHeader()
Definition at line 328 of file response.cpp.
Referenced by Cutelyst::ViewJson::render().
| void Response::setJsonArrayBody | ( | const QJsonArray & | array | ) |
Sets a QJsonArray on a QJsonDocument as the response body, using toJson(QJsonDocument::Compact) output and setting content-type to application/json.
Definition at line 150 of file response.cpp.
References Response(), body(), QJsonDocument::Compact, and QJsonDocument::toJson().
| void Response::setJsonBody | ( | const QByteArray & | json | ) |
Sets a JSON string as the response body, this method is provided for convenience as it sets the content-type to application/json.
Definition at line 135 of file response.cpp.
References Response().
| void Response::setJsonBody | ( | const QJsonDocument & | documment | ) |
Sets a QJsonDocument as the response body, using toJson(QJsonDocument::Compact) output and setting content-type to application/json.
Definition at line 120 of file response.cpp.
References Response(), body(), QJsonDocument::Compact, and QJsonDocument::toJson().
Referenced by setJsonBody().
| void Response::setJsonBody | ( | const QString & | json | ) |
Sets a JSON string as the response body, this method is provided for convenience as it sets the content-type to application/json.
Definition at line 128 of file response.cpp.
References Response(), and QString::toUtf8().
|
inline |
Sets a JSON string as the response body, this method is provided for convenience as it sets the content-type to application/json.
Definition at line 468 of file response.h.
References setJsonBody(), and QStringView::toUtf8().
| void Response::setJsonObjectBody | ( | const QJsonObject & | object | ) |
Sets a QJsonObject on a QJsonDocument as the response body, using toJson(QJsonDocument::Compact) output and setting content-type to application/json.
Definition at line 142 of file response.cpp.
References Response(), body(), QJsonDocument::Compact, and QJsonDocument::toJson().
|
noexcept |
Sets the response code status
Definition at line 70 of file response.cpp.
References Response(), and status().
Referenced by Cutelyst::RenderView::doExecute(), and Cutelyst::EngineRequest::finalizeError().
|
overridevirtualnoexcept |
Reimplemented from QIODevice::readData().
Reimplemented from QIODevice.
Definition at line 356 of file response.cpp.
References Response().
Referenced by Cutelyst::EngineRequest::finalizeHeaders().
|
noexcept |
The current response code status
Definition at line 64 of file response.cpp.
References Response().
Referenced by Cutelyst::RenderView::doExecute(), Cutelyst::EngineRequest::finalizeHeaders(), redirect(), redirectSafe(), and setStatus().
| bool Response::webSocketBinaryMessage | ( | const QByteArray & | message | ) |
Definition at line 382 of file response.cpp.
| bool Response::webSocketClose | ( | quint16 | code = Response::CloseCodeNormal, |
| const QString & | reason = {} ) |
Definition at line 394 of file response.cpp.
| bool Response::webSocketHandshake | ( | const QString & | key = {}, |
| const QString & | origin = {}, | ||
| const QString & | protocol = {} ) |
Returns true in case of success, false otherwise, which can be due missing support on the engine or missing the appropriate headers.
Definition at line 368 of file response.cpp.
| bool Response::webSocketPing | ( | const QByteArray & | payload = {} | ) |
Definition at line 388 of file response.cpp.
| bool Response::webSocketTextMessage | ( | const QString & | message | ) |
Definition at line 376 of file response.cpp.
References Response().
|
overrideprotectedvirtual |
Writes data to the response body, this will flush all response headers first and will enter in chunked mode if Transfer-Encoding header is set to chunked or if no content length is set and status is not 1xx or 204 (NoContent) or 304 (NotModified)
Implements QIODevice.
Definition at line 30 of file response.cpp.
References Response().
|
friend |
Definition at line 451 of file response.h.
|
friend |
Definition at line 454 of file response.h.
|
friend |
Definition at line 455 of file response.h.
|
friend |
Definition at line 452 of file response.h.
|
friend |
Definition at line 453 of file response.h.