Log the final http request
authorHannah von Reth <hannah.vonreth@owncloud.com>
Wed, 9 Dec 2020 12:14:05 +0000 (13:14 +0100)
committerKevin Ottens <kevin.ottens@nextcloud.com>
Wed, 30 Dec 2020 15:17:41 +0000 (16:17 +0100)
src/libsync/accessmanager.cpp
src/libsync/httplogger.cpp
src/libsync/httplogger.h

index a93a6e34200538f15ab67b306243dcc15761f782..db532a3856ac20d7975d220aa47ce23e12ebe31d 100644 (file)
@@ -90,9 +90,8 @@ QNetworkReply *AccessManager::createRequest(QNetworkAccessManager::Operation op,
     }
 #endif
 
-    HttpLogger::logRequest(newRequest, op, outgoingData);
     const auto reply = QNetworkAccessManager::createRequest(op, newRequest, outgoingData);
-    HttpLogger::logReplyOnFinished(reply);
+    HttpLogger::logRequest(reply, op, outgoingData);
     return reply;
 }
 
index d386bfbbcb1071defb0667229b4f52bd26c34bb7..85b2ebbf15776ebddfa95cc4d93eb54abab98ad8 100644 (file)
@@ -85,24 +85,9 @@ void logHttp(const QByteArray &verb, const QString &url, const QByteArray &id, c
 
 namespace OCC {
 
-
-void HttpLogger::logReplyOnFinished(const QNetworkReply *reply)
-{
-    if (!lcNetworkHttp().isInfoEnabled()) {
-        return;
-    }
-    QObject::connect(reply, &QNetworkReply::finished, reply, [reply] {
-        logHttp(requestVerb(*reply),
-            reply->url().toString(),
-            reply->request().rawHeader(XRequestId()),
-            reply->header(QNetworkRequest::ContentTypeHeader).toString(),
-            reply->rawHeaderPairs(),
-            const_cast<QNetworkReply *>(reply));
-    });
-}
-
-void HttpLogger::logRequest(const QNetworkRequest &request, QNetworkAccessManager::Operation operation, QIODevice *device)
+void HttpLogger::logRequest(QNetworkReply *reply, QNetworkAccessManager::Operation operation, QIODevice *device)
 {
+    const auto request = reply->request();
     if (!lcNetworkHttp().isInfoEnabled()) {
         return;
     }
@@ -118,6 +103,15 @@ void HttpLogger::logRequest(const QNetworkRequest &request, QNetworkAccessManage
         request.header(QNetworkRequest::ContentTypeHeader).toString(),
         header,
         device);
+
+    QObject::connect(reply, &QNetworkReply::finished, reply, [reply] {
+        logHttp(requestVerb(*reply),
+            reply->url().toString(),
+            reply->request().rawHeader(XRequestId()),
+            reply->header(QNetworkRequest::ContentTypeHeader).toString(),
+            reply->rawHeaderPairs(),
+            reply);
+    });
 }
 
 QByteArray HttpLogger::requestVerb(QNetworkAccessManager::Operation operation, const QNetworkRequest &request)
index 1d8e59b6854fde743056866f4f5edead9b2d0f2b..2dde6c117038105b8cc23979701c2d7e34a53464 100644 (file)
@@ -20,8 +20,7 @@
 
 namespace OCC {
 namespace HttpLogger {
-    void OWNCLOUDSYNC_EXPORT logReplyOnFinished(const QNetworkReply *reply);
-    void OWNCLOUDSYNC_EXPORT logRequest(const QNetworkRequest &request, QNetworkAccessManager::Operation operation, QIODevice *device);
+    void OWNCLOUDSYNC_EXPORT logRequest(QNetworkReply *reply, QNetworkAccessManager::Operation operation, QIODevice *device);
 
     /**
     * Helper to construct the HTTP verb used in the request