[Pkg-owncloud-commits] [owncloud-client] 38/484: Checksums: Prepare 'supported checksums' capability #3735

Sandro Knauß hefee-guest at moszumanska.debian.org
Wed Dec 16 00:37:08 UTC 2015


This is an automated email from the git hooks/post-receive script.

hefee-guest pushed a commit to branch master
in repository owncloud-client.

commit 3812fd0866054822e720b3c5aca189e1cc166f59
Author: Christian Kamm <mail at ckamm.de>
Date:   Thu Oct 1 15:00:33 2015 +0200

    Checksums: Prepare 'supported checksums' capability #3735
    
    It currently always returns the empty list and thus has no effect.
---
 src/libsync/capabilities.cpp                  |  5 +++++
 src/libsync/capabilities.h                    |  1 +
 src/libsync/propagateupload.cpp               | 12 ++++++++++++
 src/libsync/transmissionchecksumvalidator.cpp | 17 +++++++----------
 src/libsync/transmissionchecksumvalidator.h   | 12 ++++++++----
 5 files changed, 33 insertions(+), 14 deletions(-)

diff --git a/src/libsync/capabilities.cpp b/src/libsync/capabilities.cpp
index ed53505..5b826d7 100644
--- a/src/libsync/capabilities.cpp
+++ b/src/libsync/capabilities.cpp
@@ -38,4 +38,9 @@ int Capabilities::publicLinkExpireDateDays() const
     return _capabilities["files_sharing"].toMap()["public"].toMap()["expire_date"].toMap()["days"].toInt();
 }
 
+QStringList Capabilities::supportedChecksumTypes() const
+{
+    return QStringList();
+}
+
 }
diff --git a/src/libsync/capabilities.h b/src/libsync/capabilities.h
index 01e26e3..69c64c3 100644
--- a/src/libsync/capabilities.h
+++ b/src/libsync/capabilities.h
@@ -34,6 +34,7 @@ public:
     bool publicLinkEnforcePassword() const;
     bool publicLinkEnforceExpireDate() const;
     int  publicLinkExpireDateDays() const;
+    QStringList supportedChecksumTypes() const;
 
 private:
     QVariantMap _capabilities;
diff --git a/src/libsync/propagateupload.cpp b/src/libsync/propagateupload.cpp
index e90fee6..d441d75 100644
--- a/src/libsync/propagateupload.cpp
+++ b/src/libsync/propagateupload.cpp
@@ -213,6 +213,18 @@ void PropagateUploadFileQNAM::start()
     // in any case, the validator will emit signal startUpload to let the flow
     // continue in slotStartUpload here.
     TransmissionChecksumValidator *validator = new TransmissionChecksumValidator(filePath, this);
+
+    // If the config file does not specify a checksum type but the
+    // server supports it choose a type based on that.
+    if (validator->checksumType().isEmpty()) {
+        QStringList checksumTypes = _propagator->account()->capabilities().supportedChecksumTypes();
+        if (!checksumTypes.isEmpty()) {
+            // TODO: We might want to prefer some types over others instead
+            // of choosing the first.
+            validator->setChecksumType(checksumTypes.first());
+        }
+    }
+
     connect(validator, SIGNAL(validated(QByteArray)), this, SLOT(slotStartUpload(QByteArray)));
     validator->uploadValidation();
 }
diff --git a/src/libsync/transmissionchecksumvalidator.cpp b/src/libsync/transmissionchecksumvalidator.cpp
index 271ff61..97e5915 100644
--- a/src/libsync/transmissionchecksumvalidator.cpp
+++ b/src/libsync/transmissionchecksumvalidator.cpp
@@ -17,32 +17,29 @@
 #include "syncfileitem.h"
 #include "propagatorjobs.h"
 #include "configfile.h"
+#include "account.h"
 
 #include <qtconcurrentrun.h>
 
 namespace OCC {
 
 TransmissionChecksumValidator::TransmissionChecksumValidator(const QString& filePath, QObject *parent)
-  :QObject(parent),
+  : QObject(parent),
     _filePath(filePath)
 {
-
+    // If the config file specifies a checksum type, use that.
+    ConfigFile cfg;
+    _checksumType = cfg.transmissionChecksum();
 }
 
-void TransmissionChecksumValidator::setChecksumType( const QByteArray& type )
+void TransmissionChecksumValidator::setChecksumType(const QString& type)
 {
     _checksumType = type;
 }
 
 QString TransmissionChecksumValidator::checksumType() const
 {
-    QString checksumType = _checksumType;
-    if( checksumType.isEmpty() ) {
-        ConfigFile cfg;
-        checksumType = cfg.transmissionChecksum();
-    }
-
-    return checksumType;
+    return _checksumType;
 }
 
 void TransmissionChecksumValidator::uploadValidation()
diff --git a/src/libsync/transmissionchecksumvalidator.h b/src/libsync/transmissionchecksumvalidator.h
index fe56729..73f0fbd 100644
--- a/src/libsync/transmissionchecksumvalidator.h
+++ b/src/libsync/transmissionchecksumvalidator.h
@@ -15,6 +15,7 @@
 #pragma once
 
 #include "owncloudlib.h"
+#include "accountfwd.h"
 
 #include <QObject>
 #include <QByteArray>
@@ -53,9 +54,12 @@ public:
      */
     void downloadValidation( const QByteArray& checksumHeader );
 
-    // This is only used in test cases (by now). This class reads the required
-    // test case from the config file.
-    void setChecksumType(const QByteArray &type );
+    /**
+     * By default the checksum type is read from the config file, but can be overridden
+     * with this method.
+     */
+    void setChecksumType(const QString& type);
+
     QString checksumType() const;
 
 signals:
@@ -67,7 +71,7 @@ private slots:
     void slotDownloadChecksumCalculated();
 
 private:
-    QByteArray    _checksumType;
+    QString       _checksumType;
     QByteArray    _expectedHash;
     QByteArray    _checksumHeader;
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git



More information about the Pkg-owncloud-commits mailing list