Cutelyst  2.13.0
Public Types | Public Member Functions | List of all members
Cutelyst::ViewJson Class Referencefinal

JSON view for your data. More...

#include <Cutelyst/Plugins/JSON/viewjson.h>

Inheritance diagram for Cutelyst::ViewJson:
Inheritance graph
[legend]

Public Types

enum  ExposeMode { All, String, StringList, RegularExpression }
 
enum  JsonFormat { Indented, Compact }
 
- Public Types inherited from Cutelyst::Component
enum  Modifier {
  None, OnlyExecute, BeforeExecute, AroundExecute,
  AfterExecute
}
 

Public Member Functions

 ViewJson (QObject *parent, const QString &name=QString())
 
ExposeMode exposeStashMode () const
 
JsonFormat outputFormat () const
 
QByteArray render (Context *c) const final
 
void setExposeStash (const QRegularExpression &re)
 
void setExposeStash (const QString &key)
 
void setExposeStash (const QStringList &keys)
 
void setOutputFormat (JsonFormat format)
 
void setXJsonHeader (bool enable)
 
bool xJsonHeader () const
 
- Public Member Functions inherited from Cutelyst::View
 View (QObject *parent, const QString &name)
 
virtual Modifiers modifiers () const override
 
void setMinimalSizeToDeflate (qint32 minSize=-1)
 
- Public Member Functions inherited from Cutelyst::Component
 Component (QObject *parent=nullptr)
 
bool execute (Context *c)
 
virtual bool init (Application *application, const QVariantHash &args)
 
QString name () const
 
QString reverse () const
 
void setName (const QString &name)
 
void setReverse (const QString &reverse)
 

Additional Inherited Members

- Protected Member Functions inherited from Cutelyst::View
 View (ViewPrivate *d, QObject *parent, const QString &name)
 A derived class using pimpl should call this constructor, to reduce the number of memory allocations.
 
- Protected Member Functions inherited from Cutelyst::Component
 Component (ComponentPrivate *d, QObject *parent=nullptr)
 A derived class using pimpl should call this constructor, to reduce the number of memory allocations.
 
virtual bool afterExecute (Context *c)
 
void applyRoles (const QStack< Component * > &roles)
 
virtual bool aroundExecute (Context *c, QStack< Component * > stack)
 
virtual bool beforeExecute (Context *c)
 
virtual bool dispatcherReady (const Dispatcher *dispatch, Controller *controller)
 

Detailed Description

Cutelyst::ViewJSON is a Cutelyst View handler that returns stash data in JSON format.

Definition at line 27 of file viewjson.h.

Member Enumeration Documentation

◆ ExposeMode

This value defines which kind of exposition was defined

Definition at line 56 of file viewjson.h.

◆ JsonFormat

This value defines the format of the JSON byte array produced when rendering the view

Enumerator
Indented 

The output will be indented

Compact 

The output will be compact saving space

Definition at line 38 of file viewjson.h.

Constructor & Destructor Documentation

◆ ViewJson()

ViewJson::ViewJson ( QObject *  parent,
const QString &  name = QString() 
)
explicit

Main constructor

Definition at line 34 of file viewjson.cpp.

Member Function Documentation

◆ exposeStashMode()

ViewJson::ExposeMode ViewJson::exposeStashMode ( ) const

Returns the expose mode of the stash keys, defaults to everything (All)

Definition at line 64 of file viewjson.cpp.

◆ outputFormat()

ViewJson::JsonFormat ViewJson::outputFormat ( ) const

Returns the output format of JSON, defaults to Compact

Definition at line 39 of file viewjson.cpp.

References Compact, and Indented.

◆ render()

QByteArray ViewJson::render ( Context c) const
finalvirtual

All subclasses must reimplement this when doing it's rendering. If an error (c->error()) is not set c->response()->body() is defined with the returned value, this is useful if the view is not meant to be used as a body.

Implements Cutelyst::View.

Definition at line 103 of file viewjson.cpp.

References Cutelyst::Context::response(), Cutelyst::Response::setContentType(), Cutelyst::Response::setHeader(), and Cutelyst::Context::stash().

◆ setExposeStash() [1/3]

void ViewJson::setExposeStash ( const QRegularExpression &  re)

Specify which stash keys are exposed as a JSON response, this will change exposeStashMode() to ViewJson::RegularExpression

Definition at line 84 of file viewjson.cpp.

◆ setExposeStash() [2/3]

void ViewJson::setExposeStash ( const QString &  key)

Specify which stash key is exposed as a JSON response, this will change exposeStashMode() to ViewJson::String

Definition at line 70 of file viewjson.cpp.

◆ setExposeStash() [3/3]

void ViewJson::setExposeStash ( const QStringList &  keys)

Specify which stash keys are exposed as a JSON response, this will change exposeStashMode() to ViewJson::StringList

Definition at line 77 of file viewjson.cpp.

◆ setOutputFormat()

void ViewJson::setOutputFormat ( JsonFormat  format)

Defines the output format of JSON

Definition at line 52 of file viewjson.cpp.

References Compact, and Indented.

◆ setXJsonHeader()

void ViewJson::setXJsonHeader ( bool  enable)

By default this plugin does NOT sets X-JSON header if the requested client is a Prototype.js with X-JSON support. By setting true, you can opt-out this behavior so that you do not need to do eval() by your own.

Definition at line 91 of file viewjson.cpp.

◆ xJsonHeader()

bool ViewJson::xJsonHeader ( ) const

Returns true if the X-JSON header should be sent

Definition at line 97 of file viewjson.cpp.