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 
14 namespace Cutelyst {
15 
16 class CUTELYST_LIBRARY Headers
17 {
18 public:
22  Headers() = default;
23 
27  Headers(const Headers &other);
28 
29 #ifdef Q_COMPILER_INITIALIZER_LISTS
30 
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 
291  struct Authorization {
292  QString user;
293  QString password;
294  };
295 
301  Authorization authorizationBasicObject() const;
302 
308  QString setAuthorizationBasic(const QString &username, const QString &password);
309 
314  QString proxyAuthorization() const;
315 
321  QString proxyAuthorizationBasic() const;
322 
328  Authorization proxyAuthorizationBasicObject() const;
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 
413 private:
415 };
416 
417 void Headers::pushRawHeader(const QString &field, const QString &value)
418 {
419  m_data.insert(field, value);
420 }
421 
422 } // namespace Cutelyst
423 
424 Q_DECLARE_METATYPE(Cutelyst::Headers)
425 
426 QDebug CUTELYST_LIBRARY operator<<(QDebug dbg, const Cutelyst::Headers &headers);
427 
428 #endif // HEADERS_H
void pushRawHeader(const QString &field, const QString &value)
Definition: headers.h:417
bool operator!=(const Headers &other) const
Definition: headers.h:411
bool operator==(const Headers &other) const
Definition: headers.h:406
The Cutelyst namespace holds all public Cutelyst API.
Definition: Mainpage.dox:7
iterator insert(const Key &key, const T &value)
Headers(std::initializer_list< std::pair< QString, QString >> list)
Definition: headers.h:33
Headers & operator=(const Headers &other)
Definition: headers.h:397
QMultiHash< QString, QString > data() const
Definition: headers.h:382