cutelyst 3.9.1
A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework.
Cutelyst::Headers Class Reference

Classes

struct  Authorization

Public Member Functions

 Headers ()=default
 Headers (const Headers &other)
 Headers (std::initializer_list< std::pair< QString, QString > > list)
QString authorization () const
QString authorizationBasic () const
Authorization authorizationBasicObject () const
QString authorizationBearer () const
void clear ()
QString connection () const
bool contains (const QString &field) const
QString contentDisposition () const
QString contentEncoding () const
bool contentIsHtml () const
bool contentIsJson () const
bool contentIsText () const
bool contentIsXHtml () const
bool contentIsXml () const
qint64 contentLength () const
QString contentType () const
QString contentTypeCharset () const
QMultiHash< QString, QStringdata () const
QDateTime date () const
QString header (const QString &field) const
QString header (const QString &field, const QString &defaultValue) const
QString host () const
bool ifMatch (const QString &etag) const
QString ifModifiedSince () const
bool ifModifiedSince (const QDateTime &lastModified) const
QDateTime ifModifiedSinceDateTime () const
bool ifNoneMatch (const QString &etag) const
QString lastModified () const
bool operator!= (const Headers &other) const
Headersoperator= (const Headers &other)
bool operator== (const Headers &other) const
QString operator[] (const QString &key) const
QString proxyAuthorization () const
QString proxyAuthorizationBasic () const
Authorization proxyAuthorizationBasicObject () const
void pushHeader (const QString &field, const QString &value)
void pushHeader (const QString &field, const QStringList &values)
void pushRawHeader (const QString &field, const QString &value)
QString referer () const
void removeHeader (const QString &field)
QString server () const
QString setAuthorizationBasic (const QString &username, const QString &password)
void setCacheControl (const QString &value)
void setContentDisposition (const QString &contentDisposition)
void setContentDispositionAttachment (const QString &filename=QString())
void setContentEncoding (const QString &encoding)
void setContentLength (qint64 value)
void setContentType (const QString &contentType)
void setContentTypeCharset (const QString &charset)
QString setDateWithDateTime (const QDateTime &date)
void setETag (const QString &etag)
void setHeader (const QString &field, const QString &value)
void setHeader (const QString &field, const QStringList &values)
QString setLastModified (const QDateTime &lastModified)
void setLastModified (const QString &value)
void setProxyAuthenticate (const QString &value)
void setReferer (const QString &value)
void setServer (const QString &value)
void setWwwAuthenticate (const QString &value)
QString userAgent () const

Detailed Description

Definition at line 16 of file headers.h.

Constructor & Destructor Documentation

◆ Headers() [1/3]

Cutelyst::Headers::Headers ( )
default

Construct an empty header object.

References Headers().

Referenced by Headers(), Headers(), operator!=(), operator=(), and operator==().

◆ Headers() [2/3]

Headers::Headers ( const Headers & other)

Constructs a copy of \pa other.

Definition at line 18 of file headers.cpp.

References Headers().

◆ Headers() [3/3]

Cutelyst::Headers::Headers ( std::initializer_list< std::pair< QString, QString > > list)
inline

Construct a header from a std::initializer_list given by list.

Definition at line 33 of file headers.h.

References pushHeader().

Member Function Documentation

◆ authorization()

QString Headers::authorization ( ) const

This method is used to get an authorization header without any decoding.

Definition at line 332 of file headers.cpp.

Referenced by authorizationBasic(), and authorizationBasicObject().

◆ authorizationBasic()

QString Headers::authorizationBasic ( ) const

This method is used to get an authorization header that use the "Basic Authentication Scheme". It will return "username:password" as a single string value.

Definition at line 347 of file headers.cpp.

References authorization(), and QString::fromLatin1().

◆ authorizationBasicObject()

Headers::Authorization Headers::authorizationBasicObject ( ) const

This method is used to get an authorization header that use the "Basic Authentication Scheme". It will return a pair of username and password respectively.

Definition at line 352 of file headers.cpp.

References authorization().

◆ authorizationBearer()

QString Headers::authorizationBearer ( ) const

This method is used to get an authorization token

Definition at line 337 of file headers.cpp.

References QString::mid().

◆ clear()

void Cutelyst::Headers::clear ( )
inline

Clears all headers.

Definition at line 377 of file headers.h.

◆ connection()

QString Headers::connection ( ) const

Returns the 'Connection' header field that indicates how it should be handled after a request has been processed, like 'close'.

Definition at line 291 of file headers.cpp.

◆ contains()

bool Headers::contains ( const QString & field) const

Returns true if the header field is defined.

Definition at line 421 of file headers.cpp.

Referenced by Cutelyst::ViewJson::render().

◆ contentDisposition()

QString Headers::contentDisposition ( ) const

The Content-Disposition header field indicates if the content is expected to be displayed inline in the browser, that is, as a Web page or as part of a Web page, or as an attachment, that is downloaded and saved locally

Definition at line 23 of file headers.cpp.

Referenced by setContentDisposition().

◆ contentEncoding()

QString Headers::contentEncoding ( ) const

The Content-Encoding header field is used as a modifier to the media type. When present, its value indicates what additional encoding mechanism has been applied to the resource.

Definition at line 48 of file headers.cpp.

Referenced by Cutelyst::Request::contentEncoding().

◆ contentIsHtml()

bool Headers::contentIsHtml ( ) const

Returns TRUE if the Content-Type header field indicate that the content is some kind of HTML (including XHTML).

Definition at line 128 of file headers.cpp.

References QString::compare(), and contentType().

◆ contentIsJson()

bool Headers::contentIsJson ( ) const

Returns TRUE if the Content-Type header field indicate that the content is JSON.

Definition at line 149 of file headers.cpp.

◆ contentIsText()

bool Headers::contentIsText ( ) const

Returns TRUE if the Content-Type header field indicate that the content is textual.

Definition at line 123 of file headers.cpp.

◆ contentIsXHtml()

bool Headers::contentIsXHtml ( ) const

Returns TRUE if the Content-Type header field indicate that the content is XHTML.

Definition at line 135 of file headers.cpp.

References QString::compare(), and contentType().

◆ contentIsXml()

bool Headers::contentIsXml ( ) const

Returns TRUE if the Content-Type header field indicate that the content is XML.

Definition at line 142 of file headers.cpp.

References QString::compare(), contentType(), and QString::endsWith().

◆ contentLength()

qint64 Headers::contentLength ( ) const

Returns the size in bytes of the message content

Definition at line 158 of file headers.cpp.

◆ contentType()

QString Headers::contentType ( ) const

The Content-Type header field indicates the media type of the message content. E.g.: "text/html" The value returned will be converted to lower case, and potential parameters will be ignored. If there is no such header field, then the empty string is returned.

Definition at line 58 of file headers.cpp.

References QString::indexOf(), QString::mid(), and QString::toLower().

Referenced by contentIsHtml(), contentIsXHtml(), contentIsXml(), Cutelyst::Request::contentType(), contentTypeCharset(), setContentType(), and setContentTypeCharset().

◆ contentTypeCharset()

QString Headers::contentTypeCharset ( ) const

Returns the upper-cased charset specified in the Content-Type header.

Definition at line 74 of file headers.cpp.

References Qt::CaseInsensitive, and contentType().

◆ data()

QMultiHash< QString, QString > Cutelyst::Headers::data ( ) const
inline

Returns the internal structure of headers, to be used by Engine subclasses.

Definition at line 382 of file headers.h.

◆ date()

QDateTime Headers::date ( ) const

Returns the date header as QDateTime

Definition at line 181 of file headers.cpp.

References QLocale::c(), date(), QDateTime::setTimeSpec(), QLocale::toDateTime(), and Qt::UTC.

Referenced by date(), and setDateWithDateTime().

◆ header() [1/2]

QString Headers::header ( const QString & field) const

Returns the value associated with field

Definition at line 386 of file headers.cpp.

Referenced by Cutelyst::Request::header().

◆ header() [2/2]

QString Headers::header ( const QString & field,
const QString & defaultValue ) const

Returns the value associated with field, if field is not set defaultValue is returned

Definition at line 391 of file headers.cpp.

◆ host()

QString Headers::host ( ) const

Returns the 'Host' header field used in request messages, containing information about which host the client would like to talk to, this is especially useful for building URIs and for VirtualHosts.

Definition at line 296 of file headers.cpp.

◆ ifMatch()

bool Headers::ifMatch ( const QString & etag) const

Checks for If-Match header usually used on POST to avoid mid-air collisions, making sure the content has not changed while the client changes it. Returns true if the etag value matches the value between double quotes of the client header or if the client did not provide the If-Match header.

In case of false client should usually discard posted data and return status code of 412 - Response::PreconditionFailed

Definition at line 235 of file headers.cpp.

References QString::mid().

◆ ifModifiedSince() [1/2]

QString Headers::ifModifiedSince ( ) const

This header fields is used to make a request conditional. If the requested resource has (or has not) been modified since the time specified in this field, then the server will return a 304 Not Modified response instead of the document itself.

Definition at line 200 of file headers.cpp.

◆ ifModifiedSince() [2/2]

bool Headers::ifModifiedSince ( const QDateTime & lastModified) const

Checks if Last-Modified's content has changed in comparison to the If-Modified-Since header.

Definition at line 225 of file headers.cpp.

References QLocale::c(), lastModified(), and QLocale::toString().

◆ ifModifiedSinceDateTime()

QDateTime Headers::ifModifiedSinceDateTime ( ) const

This header fields is used to make a request conditional. If the requested resource has (or has not) been modified since the time specified in this field, then the server will return a 304 Not Modified response instead of the document itself. This method parses the header and convert to QDateTime assuming the date is in GMT timezone.

Definition at line 205 of file headers.cpp.

References QLocale::c(), QString::endsWith(), QString::left(), QDateTime::setTimeSpec(), QString::size(), QLocale::toDateTime(), and Qt::UTC.

◆ ifNoneMatch()

bool Headers::ifNoneMatch ( const QString & etag) const

Checks for If-None-Match header to see if the client has the most recent version of a cached resource. Returns true if the etag value matches the value between double quotes of the client header.

In case of true client should usually return an empty body along with a status code of 304 - Response::NotModified.

Definition at line 246 of file headers.cpp.

References QString::mid().

◆ lastModified()

QString Headers::lastModified ( ) const

This header indicates the date and time at which the resource was last modified.

Definition at line 262 of file headers.cpp.

Referenced by ifModifiedSince(), and setLastModified().

◆ operator!=()

bool Cutelyst::Headers::operator!= ( const Headers & other) const
inline

Compares if another Header object does not have the same data as this.

Definition at line 411 of file headers.h.

References Headers().

◆ operator=()

Headers & Cutelyst::Headers::operator= ( const Headers & other)
inline

Assigns other to this Header and returns a reference to this Header.

Definition at line 397 of file headers.h.

References Headers().

◆ operator==()

bool Cutelyst::Headers::operator== ( const Headers & other) const
inline

Compares if another Header object has the same data as this.

Definition at line 406 of file headers.h.

References Headers().

◆ operator[]()

QString Headers::operator[] ( const QString & key) const

Returns the value associated with key.

Definition at line 426 of file headers.cpp.

◆ proxyAuthorization()

QString Headers::proxyAuthorization ( ) const

A user agent that wishes to authenticate itself with a server or a proxy, may do so by including these headers.

Definition at line 371 of file headers.cpp.

Referenced by proxyAuthorizationBasic(), and proxyAuthorizationBasicObject().

◆ proxyAuthorizationBasic()

QString Headers::proxyAuthorizationBasic ( ) const

This method is used to get an authorization header that use the "Basic Authentication Scheme" but using the "Proxy-Authorization" header instead. It will return "username:password" as a single string value.

Definition at line 376 of file headers.cpp.

References QString::fromLatin1(), and proxyAuthorization().

◆ proxyAuthorizationBasicObject()

Headers::Authorization Headers::proxyAuthorizationBasicObject ( ) const

This method is used to get an authorization header that use the "Basic Authentication Scheme" but using the "Proxy-Authorization" header instead. It will return a pair of username and password respectively.

Definition at line 381 of file headers.cpp.

References proxyAuthorization().

◆ pushHeader() [1/2]

void Headers::pushHeader ( const QString & field,
const QString & value )

Appends the header field to values

Definition at line 406 of file headers.cpp.

Referenced by Headers().

◆ pushHeader() [2/2]

void Headers::pushHeader ( const QString & field,
const QStringList & values )

This method appends a header to internal data normalizing the key.

Definition at line 411 of file headers.cpp.

References QStringList::join().

◆ pushRawHeader()

void Cutelyst::Headers::pushRawHeader ( const QString & field,
const QString & value )
inline

This method directly inserts a Header in it's properly form which is field in upper case form with underscores instead of dashes, so 'Content-Type' becomes 'CONTENT_TYPE' like CGI does, this method should be used only by Engines to get faster performance and avoiding normalization.

Definition at line 417 of file headers.h.

References QMultiHash::insert().

◆ referer()

QString Headers::referer ( ) const

Used to specify the address (URI) of the document from which the requested resource address was obtained.

Definition at line 306 of file headers.cpp.

Referenced by Cutelyst::Request::referer().

◆ removeHeader()

void Headers::removeHeader ( const QString & field)

This method removes a header identified by field.

Definition at line 416 of file headers.cpp.

◆ server()

QString Headers::server ( ) const

Returns the server header field contains information about the software being used by the originating server program handling the request.

Definition at line 281 of file headers.cpp.

◆ setAuthorizationBasic()

QString Headers::setAuthorizationBasic ( const QString & username,
const QString & password )

This method is used to set an authorization header that use the "Basic Authentication Scheme". It won't set the values if username contains a colon ':'.

Definition at line 357 of file headers.cpp.

References QString::contains(), QString::fromLatin1(), QByteArray::toBase64(), and QString::toLatin1().

◆ setCacheControl()

void Headers::setCacheControl ( const QString & value)

Defines the Cache-Control header

Definition at line 28 of file headers.cpp.

References QString::replace().

◆ setContentDisposition()

void Headers::setContentDisposition ( const QString & contentDisposition)

Defines the Content-Disposition header

See also
contentDisposition()

Definition at line 33 of file headers.cpp.

References contentDisposition(), and QString::replace().

Referenced by setContentDispositionAttachment().

◆ setContentDispositionAttachment()

void Headers::setContentDispositionAttachment ( const QString & filename = QString())

Defines the Content-Disposition header as type attachment and the optional filename parameter

See also
contentDisposition()

Definition at line 38 of file headers.cpp.

References QString::isEmpty(), and setContentDisposition().

◆ setContentEncoding()

void Headers::setContentEncoding ( const QString & encoding)

Defines the Content-Encoding header

See also
contentEncoding()

Definition at line 53 of file headers.cpp.

References QString::replace().

◆ setContentLength()

void Headers::setContentLength ( qint64 value)

Defines the size in bytes of the message content

Definition at line 167 of file headers.cpp.

References QString::number().

◆ setContentType()

void Headers::setContentType ( const QString & contentType)

Defines the Content-Encoding header

See also
contentType()

Definition at line 69 of file headers.cpp.

References contentType(), and QString::replace().

◆ setContentTypeCharset()

void Headers::setContentTypeCharset ( const QString & charset)

The Content-Type header field indicates the media type of the message content. this defines the charset of the content-type

Definition at line 90 of file headers.cpp.

References Qt::CaseInsensitive, contentType(), and QString::isEmpty().

◆ setDateWithDateTime()

QString Headers::setDateWithDateTime ( const QDateTime & date)

Defines the header that represents the date and time at which the message was originated

Definition at line 172 of file headers.cpp.

References QLocale::c(), date(), QString::replace(), and QLocale::toString().

◆ setETag()

void Headers::setETag ( const QString & etag)

Sets the ETag header in strong form by not prepending a 'W/' (weak etag) This method will place the etag value between double quotes, like: ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"

Definition at line 257 of file headers.cpp.

References QString::replace().

◆ setHeader() [1/2]

void Headers::setHeader ( const QString & field,
const QString & value )

Sets the header field to value

Definition at line 396 of file headers.cpp.

References QString::replace().

Referenced by setHeader().

◆ setHeader() [2/2]

void Headers::setHeader ( const QString & field,
const QStringList & values )

Sets the header field to the list of values

Definition at line 401 of file headers.cpp.

References QStringList::join(), and setHeader().

◆ setLastModified() [1/2]

QString Headers::setLastModified ( const QDateTime & lastModified)

Defines the date and time at which the resource was last modified. This method takes a QDateTime and write it in RFC 822 and GMT timezone.

Definition at line 272 of file headers.cpp.

References QLocale::c(), lastModified(), setLastModified(), and QLocale::toString().

◆ setLastModified() [2/2]

void Headers::setLastModified ( const QString & value)

Defines the date and time at which the resource was last modified.

Definition at line 267 of file headers.cpp.

References QString::replace().

Referenced by setLastModified().

◆ setProxyAuthenticate()

void Headers::setProxyAuthenticate ( const QString & value)

This header must be included in a 407 Proxy Authentication Required response.

Definition at line 327 of file headers.cpp.

◆ setReferer()

void Headers::setReferer ( const QString & value)

Sets the referrer (Referer) header. This method removes the fragment from the given URI if it is present, as mandated by RFC2616. Note that the removal does not happen automatically if using the setHeader() method to set the referrer

Definition at line 311 of file headers.cpp.

References QString::indexOf(), and QString::mid().

◆ setServer()

void Headers::setServer ( const QString & value)

Defines the server header field contains information about the software being used by the originating server program handling the request.

Definition at line 286 of file headers.cpp.

References QString::replace().

◆ setWwwAuthenticate()

void Headers::setWwwAuthenticate ( const QString & value)

This header must be included as part of a 401 Unauthorized response. The field value consist of a challenge that indicates the authentication scheme and parameters applicable to the requested URI.

Definition at line 322 of file headers.cpp.

◆ userAgent()

QString Headers::userAgent ( ) const

Returns the header field used in request messages, containing information about the user agent originating the request.

Definition at line 301 of file headers.cpp.

Referenced by Cutelyst::Request::userAgent().