cutelyst 3.9.1
A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework.
headers.h
1/*
2 * SPDX-FileCopyrightText: (C) 2014-2022 Daniel Nicoletti <dantti12@gmail.com>
3 * SPDX-License-Identifier: BSD-3-Clause
4 */
5#ifndef HEADERS_H
6#define HEADERS_H
7
8#include <Cutelyst/cutelyst_global.h>
9
10#include <QtCore/QDateTime>
11#include <QtCore/QMetaType>
12#include <QtCore/QVariant>
13
14namespace Cutelyst {
15
16class CUTELYST_LIBRARY Headers
17{
18public:
22 Headers() = default;
23
27 Headers(const Headers &other);
28
29#ifdef Q_COMPILER_INITIALIZER_LISTS
33 inline Headers(std::initializer_list<std::pair<QString, QString>> list)
34 {
35 for (std::initializer_list<std::pair<QString, QString>>::const_iterator it = list.begin();
36 it != list.end();
37 ++it)
38 pushHeader(it->first, it->second);
39 }
40#endif
41
47 QString contentDisposition() const;
48
52 void setCacheControl(const QString &value);
53
58 void setContentDisposition(const QString &contentDisposition);
59
65 void setContentDispositionAttachment(const QString &filename = QString());
66
72 QString contentEncoding() const;
73
78 void setContentEncoding(const QString &encoding);
79
86 QString contentType() const;
87
92 void setContentType(const QString &contentType);
93
97 QString contentTypeCharset() const;
98
103 void setContentTypeCharset(const QString &charset);
104
108 bool contentIsText() const;
109
114 bool contentIsHtml() const;
115
119 bool contentIsXHtml() const;
120
124 bool contentIsXml() const;
125
129 bool contentIsJson() const;
130
134 qint64 contentLength() const;
135
139 void setContentLength(qint64 value);
140
144 QString setDateWithDateTime(const QDateTime &date);
145
149 QDateTime date() const;
150
156 QString ifModifiedSince() const;
157
165 QDateTime ifModifiedSinceDateTime() const;
166
171 bool ifModifiedSince(const QDateTime &lastModified) const;
172
182 bool ifMatch(const QString &etag) const;
183
192 bool ifNoneMatch(const QString &etag) const;
193
199 void setETag(const QString &etag);
200
204 QString lastModified() const;
205
209 void setLastModified(const QString &value);
210
215 QString setLastModified(const QDateTime &lastModified);
216
221 QString server() const;
222
227 void setServer(const QString &value);
228
233 QString connection() const;
234
240 QString host() const;
241
246 QString userAgent() const;
247
252 QString referer() const;
253
260 void setReferer(const QString &value);
261
267 void setWwwAuthenticate(const QString &value);
268
272 void setProxyAuthenticate(const QString &value);
273
277 QString authorization() const;
278
282 QString authorizationBearer() const;
283
289 QString authorizationBasic() const;
290
292 QString user;
293 QString password;
294 };
295
302
308 QString setAuthorizationBasic(const QString &username, const QString &password);
309
315
322
329
333 QString header(const QString &field) const;
334
338 QString header(const QString &field, const QString &defaultValue) const;
339
343 void setHeader(const QString &field, const QString &value);
344
348 void setHeader(const QString &field, const QStringList &values);
349
353 void pushHeader(const QString &field, const QString &value);
354
362 inline void pushRawHeader(const QString &field, const QString &value);
363
367 void pushHeader(const QString &field, const QStringList &values);
368
372 void removeHeader(const QString &field);
373
377 inline void clear() { m_data.clear(); }
378
382 inline QMultiHash<QString, QString> data() const { return m_data; }
383
387 bool contains(const QString &field) const;
388
392 QString operator[](const QString &key) const;
393
397 inline Headers &operator=(const Headers &other)
398 {
399 m_data = other.m_data;
400 return *this;
401 }
402
406 inline bool operator==(const Headers &other) const { return m_data == other.m_data; }
407
411 inline bool operator!=(const Headers &other) const { return m_data != other.m_data; }
412
413private:
415};
416
417void Headers::pushRawHeader(const QString &field, const QString &value)
418{
419 m_data.insert(field, value);
420}
421
422} // namespace Cutelyst
423
424Q_DECLARE_METATYPE(Cutelyst::Headers)
425
426QDebug CUTELYST_LIBRARY operator<<(QDebug dbg, const Cutelyst::Headers &headers);
427
428#endif // HEADERS_H
bool operator!=(const Headers &other) const
Definition headers.h:411
bool operator==(const Headers &other) const
Definition headers.h:406
QMultiHash< QString, QString > data() const
Definition headers.h:382
Authorization authorizationBasicObject() const
Definition headers.cpp:352
void pushHeader(const QString &field, const QString &value)
Definition headers.cpp:406
void pushRawHeader(const QString &field, const QString &value)
Definition headers.h:417
Authorization proxyAuthorizationBasicObject() const
Definition headers.cpp:381
QString setAuthorizationBasic(const QString &username, const QString &password)
Definition headers.cpp:357
void removeHeader(const QString &field)
Definition headers.cpp:416
QString header(const QString &field) const
Definition headers.cpp:386
Headers & operator=(const Headers &other)
Definition headers.h:397
QString proxyAuthorization() const
Definition headers.cpp:371
QString proxyAuthorizationBasic() const
Definition headers.cpp:376
Headers(std::initializer_list< std::pair< QString, QString > > list)
Definition headers.h:33
void setHeader(const QString &field, const QString &value)
Definition headers.cpp:396
The Cutelyst namespace holds all public Cutelyst API.
Definition Mainpage.dox:8
typename QHash< Key, T >::iterator insert(const Key &key, const T &value)