24 #include <QStringList>
38 return m_data.value(QStringLiteral(
"CONTENT_DISPOSITION"));
43 m_data.
replace(QStringLiteral(
"CACHE_CONTROL"), value);
62 return m_data.value(QStringLiteral(
"CONTENT_ENCODING"));
67 m_data.
replace(QStringLiteral(
"CONTENT_ENCODING"), encoding);
73 const auto it = m_data.
constFind(QStringLiteral(
"CONTENT_TYPE"));
74 if (it != m_data.constEnd()) {
89 const auto it = m_data.
constFind(QStringLiteral(
"CONTENT_TYPE"));
90 if (it != m_data.constEnd()) {
104 const auto it = m_data.
constFind(QStringLiteral(
"CONTENT_TYPE"));
105 if (it == m_data.constEnd() || (it.value().isEmpty() && !charset.
isEmpty())) {
118 m_data.
remove(QStringLiteral(
"CONTENT_TYPE"));
129 }
else if (!charset.
isEmpty()) {
137 return m_data.value(QStringLiteral(
"CONTENT_TYPE")).startsWith(
QLatin1String(
"text/"));
165 const auto it = m_data.
constFind(QStringLiteral(
"CONTENT_TYPE"));
166 if (it != m_data.constEnd()) {
174 auto it = m_data.
constFind(QStringLiteral(
"CONTENT_LENGTH"));
175 if (it != m_data.constEnd()) {
176 return it.value().toLongLong();
191 QStringLiteral(
"ddd, dd MMM yyyy hh:mm:ss 'GMT"));
192 m_data.
replace(QStringLiteral(
"DATE"), dt);
199 auto it = m_data.
constFind(QStringLiteral(
"DATE"));
200 if (it != m_data.constEnd()) {
205 QStringLiteral(
"ddd, dd MMM yyyy hh:mm:ss"));
208 QStringLiteral(
"ddd, dd MMM yyyy hh:mm:ss"));
218 return m_data.value(QStringLiteral(
"IF_MODIFIED_SINCE"));
224 auto it = m_data.
constFind(QStringLiteral(
"IF_MODIFIED_SINCE"));
225 if (it != m_data.constEnd()) {
226 const QString &ifModifiedStr = it.value();
230 QStringLiteral(
"ddd, dd MMM yyyy hh:mm:ss"));
233 QStringLiteral(
"ddd, dd MMM yyyy hh:mm:ss"));
243 auto it = m_data.
constFind(QStringLiteral(
"IF_MODIFIED_SINCE"));
244 if (it != m_data.constEnd()) {
246 QStringLiteral(
"ddd, dd MMM yyyy hh:mm:ss 'GMT"));
253 auto it = m_data.
constFind(QStringLiteral(
"IF_MATCH"));
254 if (it != m_data.constEnd()) {
255 const QString &clientETag = it.value();
256 return clientETag.
mid(1, clientETag.
size() - 2) == etag ||
257 clientETag.
mid(3, clientETag.
size() - 4) == etag;
264 auto it = m_data.
constFind(QStringLiteral(
"IF_NONE_MATCH"));
265 if (it != m_data.constEnd()) {
266 const QString &clientETag = it.value();
267 return clientETag.
mid(1, clientETag.
size() - 2) == etag ||
268 clientETag.
mid(3, clientETag.
size() - 4) == etag;
280 return m_data.value(QStringLiteral(
"LAST_MODIFIED"));
285 m_data.
replace(QStringLiteral(
"LAST_MODIFIED"), value);
293 QStringLiteral(
"ddd, dd MMM yyyy hh:mm:ss 'GMT"));
300 return m_data.value(QStringLiteral(
"SERVER"));
305 m_data.
replace(QStringLiteral(
"SERVER"), value);
310 return m_data.value(QStringLiteral(
"CONNECTION"));
315 return m_data.value(QStringLiteral(
"HOST"));
320 return m_data.value(QStringLiteral(
"USER_AGENT"));
325 return m_data.value(QStringLiteral(
"REFERER"));
331 if (fragmentPos != -1) {
333 m_data.
replace(QStringLiteral(
"REFERER"), uri.
mid(0, fragmentPos));
335 m_data.
replace(QStringLiteral(
"REFERER"), uri);
341 m_data.
replace(QStringLiteral(
"WWW_AUTHENTICATE"), value);
346 m_data.
replace(QStringLiteral(
"PROXY_AUTHENTICATE"), value);
351 return m_data.value(QStringLiteral(
"AUTHORIZATION"));
357 auto it = m_data.
constFind(QStringLiteral(
"AUTHORIZATION"));
358 if (it != m_data.constEnd() && it.value().startsWith(
QLatin1String(
"Bearer "))) {
359 ret = it.value().
mid(7);
378 qCWarning(CUTELYST_CORE) <<
"Headers::Basic authorization user name can't contain ':'";
384 m_data.
replace(QStringLiteral(
"AUTHORIZATION"), ret);
390 return m_data.value(QStringLiteral(
"PROXY_AUTHORIZATION"));
405 return m_data.value(normalizeHeaderKey(field));
410 return m_data.value(normalizeHeaderKey(field), defaultValue);
415 m_data.
replace(normalizeHeaderKey(field), value);
425 m_data.
insert(normalizeHeaderKey(field), value);
435 m_data.
remove(normalizeHeaderKey(field));
440 return m_data.
contains(normalizeHeaderKey(field));
445 return m_data.value(normalizeHeaderKey(key));
452 while (i < key.
size()) {
481 const QByteArray authorization = decodeBasicAuth(auth);
482 if (!authorization.
isEmpty()) {
483 int pos = authorization.
indexOf(
':');
499 for (
auto it = data.constBegin();
500 it != data.constEnd(); ++it) {
static QString camelCaseHeader(const QString &headerKey)
The Cutelyst namespace holds all public Cutelyst API.
QByteArray fromBase64(const QByteArray &base64, QByteArray::Base64Options options)
int indexOf(char ch, int from) const const
bool isEmpty() const const
QByteArray left(int len) const const
QByteArray mid(int pos, int len) const const
QByteArray toBase64(QByteArray::Base64Options options) const const
bool isLetter() const const
bool isLower() const const
QChar toUpper() const const
void setTimeSpec(Qt::TimeSpec spec)
QDateTime toUTC() const const
bool autoInsertSpaces() const const
void setAutoInsertSpaces(bool b)
QDateTime toDateTime(const QString &string, QLocale::FormatType format) const const
QString toString(qlonglong i) const const
typename QHash< Key, T >::const_iterator constFind(const Key &key, const T &value) const const
bool contains(const Key &key, const T &value) const const
typename QHash< Key, T >::iterator insert(const Key &key, const T &value)
int remove(const Key &key, const T &value)
typename QHash< Key, T >::iterator replace(const Key &key, const T &value)
QString & append(QChar ch)
bool contains(QChar ch, Qt::CaseSensitivity cs) const const
bool endsWith(const QString &s, Qt::CaseSensitivity cs) const const
QString fromLatin1(const char *str, int size)
int indexOf(QChar ch, int from, Qt::CaseSensitivity cs) const const
bool isEmpty() const const
int lastIndexOf(QChar ch, int from, Qt::CaseSensitivity cs) const const
QString left(int n) const const
QString mid(int position, int n) const const
QString number(int n, int base)
QString & remove(int position, int n)
QString & replace(int position, int n, QChar after)
bool startsWith(const QString &s, Qt::CaseSensitivity cs) const const
QByteArray toLatin1() const const
QString toLower() const const
QString toUpper() const const
QString trimmed() const const
QString join(const QString &separator) const const