cutelyst  3.7.0
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 <QtCore/QVariant>
9 #include <QtCore/QDateTime>
10 #include <QtCore/QMetaType>
11 
12 #include <Cutelyst/cutelyst_global.h>
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
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(); it != list.end(); ++it)
36  pushHeader(it->first, it->second);
37  }
38 #endif
39 
45  QString contentDisposition() const;
46 
50  void setCacheControl(const QString &value);
51 
56  void setContentDisposition(const QString &contentDisposition);
57 
63  void setContentDispositionAttachment(const QString &filename = QString());
64 
69  QString contentEncoding() const;
70 
75  void setContentEncoding(const QString &encoding);
76 
83  QString contentType() const;
84 
89  void setContentType(const QString &contentType);
90 
94  QString contentTypeCharset() const;
95 
100  void setContentTypeCharset(const QString &charset);
101 
105  bool contentIsText() const;
106 
111  bool contentIsHtml() const;
112 
116  bool contentIsXHtml() const;
117 
121  bool contentIsXml() const;
122 
126  bool contentIsJson() const;
127 
131  qint64 contentLength() const;
132 
136  void setContentLength(qint64 value);
137 
141  QString setDateWithDateTime(const QDateTime &date);
142 
146  QDateTime date() const;
147 
153  QString ifModifiedSince() const;
154 
162  QDateTime ifModifiedSinceDateTime() const;
163 
168  bool ifModifiedSince(const QDateTime &lastModified) const;
169 
179  bool ifMatch(const QString &etag) const;
180 
189  bool ifNoneMatch(const QString &etag) const;
190 
196  void setETag(const QString &etag);
197 
201  QString lastModified() const;
202 
206  void setLastModified(const QString &value);
207 
212  QString setLastModified(const QDateTime &lastModified);
213 
218  QString server() const;
219 
224  void setServer(const QString &value);
225 
230  QString connection() const;
231 
236  QString host() const;
237 
241  QString userAgent() const;
242 
246  QString referer() const;
247 
254  void setReferer(const QString &value);
255 
261  void setWwwAuthenticate(const QString &value);
262 
266  void setProxyAuthenticate(const QString &value);
267 
271  QString authorization() const;
272 
276  QString authorizationBearer() const;
277 
283  QString authorizationBasic() const;
284 
285  struct Authorization {
286  QString user;
287  QString password;
288  };
289 
295  Authorization authorizationBasicObject() const;
296 
302  QString setAuthorizationBasic(const QString &username, const QString &password);
303 
307  QString proxyAuthorization() const;
308 
314  QString proxyAuthorizationBasic() const;
315 
321  Authorization proxyAuthorizationBasicObject() const;
322 
326  QString header(const QString &field) const;
327 
331  QString header(const QString &field, const QString &defaultValue) const;
332 
336  void setHeader(const QString &field, const QString &value);
337 
341  void setHeader(const QString &field, const QStringList &values);
342 
346  void pushHeader(const QString &field, const QString &value);
347 
355  inline void pushRawHeader(const QString &field, const QString &value);
356 
360  void pushHeader(const QString &field, const QStringList &values);
361 
365  void removeHeader(const QString &field);
366 
370  inline void clear() {
371  m_data.clear();
372  }
373 
377  inline QMultiHash<QString, QString> data() const {
378  return m_data;
379  }
380 
384  bool contains(const QString &field);
385 
389  QString operator[](const QString &key) const;
390 
394  inline Headers &operator=(const Headers &other)
395  {
396  m_data = other.m_data;
397  return *this;
398  }
399 
403  inline bool operator==(const Headers &other) const {
404  return m_data == other.m_data;
405  }
406 
410  inline bool operator!=(const Headers &other) const {
411  return m_data != other.m_data;
412  }
413 
414 private:
415  QMultiHash<QString, QString> m_data;
416 };
417 
418 void Headers::pushRawHeader(const QString &field, const QString &value) {
419  m_data.insert(field, value);
420 }
421 
422 }
423 
424 Q_DECLARE_METATYPE(Cutelyst::Headers)
425 
426 QDebug CUTELYST_LIBRARY operator<<(QDebug dbg, const Cutelyst::Headers &headers);
427 
428 #endif // HEADERS_H
bool operator!=(const Headers &other) const
Definition: headers.h:410
bool operator==(const Headers &other) const
Definition: headers.h:403
void pushRawHeader(const QString &field, const QString &value)
Definition: headers.h:418
QMultiHash< QString, QString > data() const
Definition: headers.h:377
Headers & operator=(const Headers &other)
Definition: headers.h:394
Headers(std::initializer_list< std::pair< QString, QString > > list)
Definition: headers.h:33
The Cutelyst namespace holds all public Cutelyst API.
Definition: Mainpage.dox:8