diff options
Diffstat (limited to 'src/network/access/qhttpnetworkheader.cpp')
-rw-r--r-- | src/network/access/qhttpnetworkheader.cpp | 85 |
1 files changed, 14 insertions, 71 deletions
diff --git a/src/network/access/qhttpnetworkheader.cpp b/src/network/access/qhttpnetworkheader.cpp index 5901a146dc..7f9c94dc9c 100644 --- a/src/network/access/qhttpnetworkheader.cpp +++ b/src/network/access/qhttpnetworkheader.cpp @@ -1,41 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtNetwork module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "qhttpnetworkheader_p.h" @@ -48,27 +12,12 @@ QHttpNetworkHeaderPrivate::QHttpNetworkHeaderPrivate(const QUrl &newUrl) { } -QHttpNetworkHeaderPrivate::QHttpNetworkHeaderPrivate(const QHttpNetworkHeaderPrivate &other) - :QSharedData(other) -{ - url = other.url; - fields = other.fields; -} - qint64 QHttpNetworkHeaderPrivate::contentLength() const { bool ok = false; // We are not using the headerField() method here because servers might send us multiple content-length // headers which is crap (see QTBUG-15311). Therefore just take the first content-length header field. - QByteArray value; - QList<QPair<QByteArray, QByteArray> >::ConstIterator it = fields.constBegin(), - end = fields.constEnd(); - for ( ; it != end; ++it) - if (it->first.compare("content-length", Qt::CaseInsensitive) == 0) { - value = it->second; - break; - } - + QByteArray value = parser.firstHeaderField("content-length"); qint64 length = value.toULongLong(&ok); if (ok) return length; @@ -80,7 +29,7 @@ void QHttpNetworkHeaderPrivate::setContentLength(qint64 length) setHeaderField("Content-Length", QByteArray::number(length)); } -QByteArray QHttpNetworkHeaderPrivate::headerField(const QByteArray &name, const QByteArray &defaultValue) const +QByteArray QHttpNetworkHeaderPrivate::headerField(QByteArrayView name, const QByteArray &defaultValue) const { QList<QByteArray> allValues = headerFieldValues(name); if (allValues.isEmpty()) @@ -89,35 +38,29 @@ QByteArray QHttpNetworkHeaderPrivate::headerField(const QByteArray &name, const return allValues.join(", "); } -QList<QByteArray> QHttpNetworkHeaderPrivate::headerFieldValues(const QByteArray &name) const +QList<QByteArray> QHttpNetworkHeaderPrivate::headerFieldValues(QByteArrayView name) const { - QList<QByteArray> result; - QList<QPair<QByteArray, QByteArray> >::ConstIterator it = fields.constBegin(), - end = fields.constEnd(); - for ( ; it != end; ++it) - if (name.compare(it->first, Qt::CaseInsensitive) == 0) - result += it->second; - - return result; + return parser.headerFieldValues(name); } void QHttpNetworkHeaderPrivate::setHeaderField(const QByteArray &name, const QByteArray &data) { - auto firstEqualsName = [&name](const QPair<QByteArray, QByteArray> &header) { - return name.compare(header.first, Qt::CaseInsensitive) == 0; - }; - fields.removeIf(firstEqualsName); - fields.append(qMakePair(name, data)); + parser.setHeaderField(name, data); } void QHttpNetworkHeaderPrivate::prependHeaderField(const QByteArray &name, const QByteArray &data) { - fields.prepend(qMakePair(name, data)); + parser.prependHeaderField(name, data); +} + +QHttpHeaders QHttpNetworkHeaderPrivate::headers() const +{ + return parser.headers(); } void QHttpNetworkHeaderPrivate::clearHeaders() { - fields.clear(); + parser.clearHeaders(); } bool QHttpNetworkHeaderPrivate::operator==(const QHttpNetworkHeaderPrivate &other) const |