diff --git a/src/libsync/httplogger.cpp b/src/libsync/httplogger.cpp index 7f39883ee77..02b34627d3b 100644 --- a/src/libsync/httplogger.cpp +++ b/src/libsync/httplogger.cpp @@ -63,16 +63,16 @@ struct HttpContext bool send = false; }; -void logHttp(const QByteArray &verb, HttpContext *ctx, QJsonObject &&header, QIODevice *device, bool cached = false) +void logHttp(const QByteArray &verb, const QHttpHeaders &headers, HttpContext *ctx, QJsonObject &&header, QIODevice *device, bool cached = false) { static const bool redact = !qEnvironmentVariableIsSet("OWNCLOUD_HTTPLOGGER_NO_REDACT"); const auto reply = qobject_cast(device); if (redact) { - const QString authKey = QStringLiteral("Authorization"); - const QString auth = header.value(authKey).toString(); - if (!auth.isEmpty()) { - header.insert(authKey, auth.startsWith(QStringLiteral("Bearer ")) ? QStringLiteral("Bearer [redacted]") : QStringLiteral("Basic [redacted]")); + if (headers.contains(QHttpHeaders::WellKnownHeader::Authorization)) { + const auto auth = QString::fromUtf8(headers.value(QHttpHeaders::WellKnownHeader::Authorization)); + header.insert(QStringLiteral("Authorization"), + auth.startsWith(QStringLiteral("Bearer ")) ? QStringLiteral("Bearer [redacted]") : QStringLiteral("Basic [redacted]")); } } @@ -104,10 +104,7 @@ void logHttp(const QByteArray &verb, HttpContext *ctx, QJsonObject &&header, QIO const auto contentLength = device ? device->size() : 0; QJsonObject body = {{QStringLiteral("length"), device ? QString::number(contentLength) : QStringLiteral("null")}}; if (contentLength > 0) { - QString contentType = header.value(QStringLiteral("Content-Type")).toString(); - if (contentType.isEmpty()) { - contentType = header.value(QStringLiteral("content-type")).toString(); - } + const auto contentType = QString::fromUtf8(headers.value(QHttpHeaders::WellKnownHeader::ContentType)); if (isTextBody(contentType)) { if (!device->isOpen()) { // should we close it again? @@ -115,8 +112,7 @@ void logHttp(const QByteArray &verb, HttpContext *ctx, QJsonObject &&header, QIO } Q_ASSERT(device->pos() == 0); QString data = QString::fromUtf8(device->peek(PeekSize)); - if (PeekSize < contentLength) - { + if (PeekSize < contentLength) { data += QStringLiteral("...(%1 bytes elided)").arg(QString::number(contentLength - PeekSize)); } body[QStringLiteral("data")] = data; @@ -169,7 +165,7 @@ void HttpLogger::logRequest(QNetworkReply *reply, QNetworkAccessManager::Operati for (const auto &key : request.rawHeaderList()) { header[QString::fromUtf8(key)] = QString::fromUtf8(request.rawHeader(key)); } - logHttp(requestVerb(operation, request), ctx, std::move(header), device, cached); + logHttp(requestVerb(operation, request), request.headers(), ctx, std::move(header), device, cached); }; QObject::connect(reply, &QNetworkReply::requestSent, reply, logSend, Qt::DirectConnection); QObject::connect(reply, &QNetworkReply::errorOccurred, reply, logError, Qt::DirectConnection); @@ -186,7 +182,7 @@ void HttpLogger::logRequest(QNetworkReply *reply, QNetworkAccessManager::Operati for (const auto &[key, value] : reply->rawHeaderPairs()) { header[QString::fromUtf8(key)] = QString::fromUtf8(value); } - logHttp(requestVerb(*reply), ctx.get(), std::move(header), reply); + logHttp(requestVerb(*reply), reply->headers(), ctx.get(), std::move(header), reply); }, Qt::DirectConnection); }