read capabilities for bulk upload from server
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>
Thu, 28 Oct 2021 14:55:27 +0000 (16:55 +0200)
committerMatthieu Gallien <matthieu.gallien@nextcloud.com>
Wed, 24 Nov 2021 15:17:47 +0000 (16:17 +0100)
use it in dedicated tests

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
src/libsync/capabilities.cpp
src/libsync/capabilities.h
src/libsync/owncloudpropagator.cpp
test/testcapabilities.cpp
test/testsyncengine.cpp

index cfffa403afef3865ffc5e6429b84920b41272898..a917c20e5409db332fdce306e2b5827f08516f61 100644 (file)
@@ -216,6 +216,11 @@ bool Capabilities::chunkingNg() const
     return _capabilities["dav"].toMap()["chunking"].toByteArray() >= "1.0";
 }
 
+bool Capabilities::bulkUpload() const
+{
+    return _capabilities["dav"].toMap()["bulkupload"].toByteArray() >= "1.0";
+}
+
 bool Capabilities::userStatus() const
 {
     if (!_capabilities.contains("user_status")) {
index f91208d90bd8dd00c5dc736f67c7d8e3c264a09f..dddda5f5c1805fdad829d55a3d34fddf041fe173 100644 (file)
@@ -63,6 +63,7 @@ public:
     bool shareResharing() const;
     int shareDefaultPermissions() const;
     bool chunkingNg() const;
+    bool bulkUpload() const;
     bool userStatus() const;
     bool userStatusSupportsEmoji() const;
 
index 9a4ceae545958e8f2a29a01ace500e53be8d2622..b36365780e3bf8b0f38b1dae9964de42bb32e2b1 100644 (file)
@@ -861,7 +861,7 @@ Result<Vfs::ConvertToPlaceholderResult, QString> OwncloudPropagator::staticUpdat
 
 bool OwncloudPropagator::isDelayedUploadItem(const SyncFileItemPtr &item) const
 {
-    return !_scheduleDelayedTasks && !item->_isEncrypted;
+    return account()->capabilities().bulkUpload() && !_scheduleDelayedTasks && !item->_isEncrypted && _syncOptions._minChunkSize > item->_size;
 }
 
 void OwncloudPropagator::setScheduleDelayedTasks(bool active)
index 1c8e9bac28611ac8a30f3cf47ca7bdb246bea34c..2088cc7b0b02bfda30d5c07d9de20e93d8169c8e 100644 (file)
@@ -243,6 +243,20 @@ private slots:
 
         QCOMPARE(defaultSharePermissionsAvailable, 31);
     }
+
+    void testBulkUploadAvailable_bulkUploadAvailable_returnTrue()
+    {
+        QVariantMap bulkuploadMap;
+        bulkuploadMap["bulkupload"] = "1.0";
+
+        QVariantMap capabilitiesMap;
+        capabilitiesMap["dav"] = bulkuploadMap;
+
+        const auto &capabilities = OCC::Capabilities(capabilitiesMap);
+        const auto bulkuploadAvailable = capabilities.bulkUpload();
+
+        QCOMPARE(bulkuploadAvailable, true);
+    }
 };
 
 QTEST_GUILESS_MAIN(TestCapabilities)
index 7e1fc36c46ea0f3eaf9c093f579364a174fa2b63..e17e7ac31c8e998898d25fe52a2110d14aab95be 100644 (file)
@@ -92,6 +92,8 @@ private slots:
 
     void testDirUploadWithDelayedAlgorithm() {
         FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()};
+        fakeFolder.syncEngine().account()->setCapabilities({ { "dav", QVariantMap{ {"bulkupload", "1.0"} } } });
+
         ItemCompletedSpy completeSpy(fakeFolder);
         fakeFolder.localModifier().mkdir("Y");
         fakeFolder.localModifier().insert("Y/d0");