From bfb720fc35a3a36786435ae2809ff0a7029b30d7 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 20 Apr 2023 20:53:48 +0800 Subject: [PATCH] Extract propfind tag xml node processing into separate method Signed-off-by: Claudio Cambra --- src/libsync/networkjobs.cpp | 44 ++++++++++++++++++++++--------------- src/libsync/networkjobs.h | 1 + 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/src/libsync/networkjobs.cpp b/src/libsync/networkjobs.cpp index d7baf9f28..d858d5320 100644 --- a/src/libsync/networkjobs.cpp +++ b/src/libsync/networkjobs.cpp @@ -663,25 +663,8 @@ QVariantMap PropfindJob::processPropfindDomDocument(const QDomDocument &domDocum const auto propChildElementTagName = propChildElement.tagName(); if (propChildElementTagName == propfindFileTagsContainerElementTagName) { - const auto tagNodes = domDocument.elementsByTagName(propfindFileTagElementTagName); - const auto tagCount = tagNodes.count(); - - auto tagList = QStringList(); - tagList.reserve(tagCount); - - for (auto i = 0; i < tagCount; ++i) { - const auto tagNode = tagNodes.at(i); - const auto tagElement = tagNode.toElement(); - - if (tagElement.isNull()) { - continue; - } - - tagList.append(tagElement.text()); - } - + const auto tagList = processTagsInPropfindDomDocument(domDocument); items.insert(propChildElementTagName, tagList); - } else { items.insert(propChildElementTagName, propChildElement.text()); } @@ -694,6 +677,31 @@ QVariantMap PropfindJob::processPropfindDomDocument(const QDomDocument &domDocum return items; } +QStringList PropfindJob::processTagsInPropfindDomDocument(const QDomDocument &domDocument) +{ + const auto tagNodes = domDocument.elementsByTagName(propfindFileTagElementTagName); + if (tagNodes.isEmpty()) { + return {}; + } + + const auto tagCount = tagNodes.count(); + auto tagList = QStringList(); + tagList.reserve(tagCount); + + for (auto i = 0; i < tagCount; ++i) { + const auto tagNode = tagNodes.at(i); + const auto tagElement = tagNode.toElement(); + + if (tagElement.isNull()) { + continue; + } + + tagList.append(tagElement.text()); + } + + return tagList; +} + /*********************************************************************************************/ #ifndef TOKEN_AUTH_ONLY diff --git a/src/libsync/networkjobs.h b/src/libsync/networkjobs.h index c274b4d3f..11f3c26ac 100644 --- a/src/libsync/networkjobs.h +++ b/src/libsync/networkjobs.h @@ -200,6 +200,7 @@ private slots: private: static QVariantMap processPropfindDomDocument(const QDomDocument &domDocument); + static QStringList processTagsInPropfindDomDocument(const QDomDocument &domDocument); QList _properties; }; -- 2.30.2