18 #include "viewjson_p.h"
20 #include <Cutelyst/context.h>
21 #include <Cutelyst/response.h>
23 #include <QtCore/QJsonDocument>
24 #include <QtCore/QJsonObject>
26 using namespace Cutelyst;
43 case QJsonDocument::Indented:
46 case QJsonDocument::Compact:
57 d->format = QJsonDocument::Indented;
60 d->format = QJsonDocument::Compact;
73 d->exposeMode = ViewJson::String;
80 d->exposeMode = ViewJson::StringList;
87 d->exposeMode = ViewJson::RegularExpression;
94 d->xJsonHeader = enable;
100 return d->xJsonHeader;
109 const QVariantHash stash = c->
stash();
111 switch (d->exposeMode) {
117 auto it = stash.constFind(d->exposeKey);
118 if (it != stash.constEnd()) {
125 QVariantHash exposedStash;
127 auto it = stash.constBegin();
128 while (it != stash.constEnd()) {
130 if (d->exposeKeys.contains(key)) {
131 exposedStash.insertMulti(key, it.value());
138 case RegularExpression:
140 QVariantHash exposedStash;
143 auto it = stash.constBegin();
144 while (it != stash.constEnd()) {
147 exposedStash.insertMulti(key, it.value());
157 if (d->xJsonHeader && c->request()->headers().contains(QStringLiteral(
"X_PROTOTYPE_VERSION"))) {
158 res->
setHeader(QStringLiteral(
"X_JSON"), QStringLiteral(
"eval(\"(\"+this.transport.responseText+\")\")"));
166 #include "moc_viewjson.cpp"
void setXJsonHeader(bool enable)
QRegularExpressionMatch match(const QString &subject, int offset, MatchType matchType, MatchOptions matchOptions) const
void setContentType(const QString &type)
QByteArray toJson(JsonFormat format) const
void setHeader(const QString &field, const QString &value)
QJsonObject fromVariantHash(const QVariantHash &hash)
QJsonValue fromVariant(const QVariant &variant)
void setExposeStash(const QString &key)
ViewJson(QObject *parent, const QString &name=QString())
void setOutputFormat(JsonFormat format)
ExposeMode exposeStashMode() const
JsonFormat outputFormat() const
Response * response() const
QByteArray render(Context *c) const final
Cutelyst View abstract view component
iterator insert(const QString &key, const QJsonValue &value)
void stash(const QVariantHash &unite)