5#include "statusmessage.h"
7#include <Cutelyst/Application>
8#include <Cutelyst/Plugins/Session/session.h>
10#include <QRandomGenerator>
11#include <QtCore/QDateTime>
12#include <QtCore/QLoggingCategory>
16Q_LOGGING_CATEGORY(C_STATUSMESSAGE,
"cutelyst.plugins.statusmessage", QtWarningMsg)
27 QString sessionPrefix = QStringLiteral(
"status_msg");
28 QString tokenParam = QStringLiteral(
"mid");
29 QString statusMsgStashKey = QStringLiteral(
"status_msg");
30 QString errorMsgStashKey = QStringLiteral(
"error_msg");
33void StatusMessagePrivate::_q_postFork(
Application *app)
47StatusMessage::~StatusMessage()
55 return d->sessionPrefix;
79 return d->statusMsgStashKey;
91 return d->errorMsgStashKey;
102 if (Q_UNLIKELY(!m_instance)) {
103 qCCritical(C_STATUSMESSAGE,
"StatusMessage plugin not registered");
108 const QString token = c->request()->
queryParam(priv->tokenParam);
109 if (token.isEmpty()) {
113 QStringList deleteKeys;
114 const QString statusKey = priv->sessionPrefix + QLatin1String(
"status") + token;
116 if (!statusValue.isNull()) {
117 deleteKeys.append(statusKey);
118 c->
setStash(priv->statusMsgStashKey, statusValue);
121 const QString errorKey = priv->sessionPrefix + QLatin1String(
"error") + token;
123 if (!errorValue.isNull()) {
124 deleteKeys.append(errorKey);
125 c->
setStash(priv->errorMsgStashKey, errorValue);
128 if (!deleteKeys.isEmpty()) {
133inline QString createToken()
135 return QString::number(QRandomGenerator::global()->generate() % 99999999)
136 .rightJustified(8, u
'0',
true);
142 if (Q_UNLIKELY(!m_instance)) {
143 qCCritical(C_STATUSMESSAGE,
"StatusMessage plugin not registered");
147 token = createToken();
155 if (Q_UNLIKELY(!m_instance)) {
156 qCCritical(C_STATUSMESSAGE,
"StatusMessage plugin not registered");
161 const QString token = createToken();
163 map.insert(priv->tokenParam, token);
170 if (Q_UNLIKELY(!m_instance)) {
171 qCCritical(C_STATUSMESSAGE,
"StatusMessage plugin not registered");
175 token = createToken();
183 if (Q_UNLIKELY(!m_instance)) {
184 qCCritical(C_STATUSMESSAGE,
"StatusMessage plugin not registered");
189 const QString token = createToken();
190 Session::setValue(c, priv->sessionPrefix + QLatin1String(
"status") + token, msg);
191 map.insert(priv->tokenParam, token);
201#include "moc_statusmessage.cpp"
The Cutelyst Application.
T plugin()
Returns the registered plugin that casts to the template type T.
void postForked(Cutelyst::Application *app)
void setStash(const QString &key, const QVariant &value)
QString queryParam(const QString &key, const QString &defaultValue={}) const
static QVariant value(Context *c, const QString &key, const QVariant &defaultValue=QVariant())
static void setValue(Context *c, const QString &key, const QVariant &value)
static void deleteValues(Context *c, const QStringList &keys)
static ParamsMultiMap errorQuery(Context *c, const QString &msg, ParamsMultiMap query=ParamsMultiMap())
static QString error(Context *c, const QString &msg)
QString tokenParam() const
static void load(Context *c)
QString sessionPrefix() const
QString errorMgStashKey() const
void setTokenParam(const QString &tokenParam)
virtual bool setup(Application *app) override
static QString status(Context *c, const QString &msg)
void setErrorMgStashKey(const QString &errorMgStashKey)
QString statusMsgStashKey() const
StatusMessage(Application *parent)
void setStatusMsgStashKey(const QString &statusMsgStashKey)
void setSessionPrefix(const QString &sessionPrefix)
static ParamsMultiMap statusQuery(Context *c, const QString &msg, ParamsMultiMap query=ParamsMultiMap())
The Cutelyst namespace holds all public Cutelyst API.
QMultiMap< QString, QString > ParamsMultiMap