diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 18:07:22 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 18:07:22 +0000 |
commit | c04dcc2e7d834218ef2d4194331e383402495ae1 (patch) | |
tree | 7333e38d10d75386e60f336b80c2443c1166031d /xbmc/filesystem/DAVCommon.cpp | |
parent | Initial commit. (diff) | |
download | kodi-c04dcc2e7d834218ef2d4194331e383402495ae1.tar.xz kodi-c04dcc2e7d834218ef2d4194331e383402495ae1.zip |
Adding upstream version 2:20.4+dfsg.upstream/2%20.4+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | xbmc/filesystem/DAVCommon.cpp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/xbmc/filesystem/DAVCommon.cpp b/xbmc/filesystem/DAVCommon.cpp new file mode 100644 index 0000000..f200609 --- /dev/null +++ b/xbmc/filesystem/DAVCommon.cpp @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2005-2018 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#include "DAVCommon.h" + +#include "utils/StringUtils.h" +#include "utils/log.h" + +using namespace XFILE; + +/* + * Return true if pElement value is equal value without namespace. + * + * if pElement is <DAV:foo> and value is foo then ValueWithoutNamespace is true + */ +bool CDAVCommon::ValueWithoutNamespace(const TiXmlNode *pNode, const std::string& value) +{ + const TiXmlElement *pElement; + + if (!pNode) + { + return false; + } + + pElement = pNode->ToElement(); + + if (!pElement) + { + return false; + } + + std::vector<std::string> tag = StringUtils::Split(pElement->ValueStr(), ":", 2); + + if (tag.size() == 1 && tag[0] == value) + { + return true; + } + else if (tag.size() == 2 && tag[1] == value) + { + return true; + } + else if (tag.size() > 2) + { + CLog::Log(LOGERROR, "{} - Splitting {} failed, size(): {}, value: {}", __FUNCTION__, + pElement->Value(), (unsigned long int)tag.size(), value); + } + + return false; +} + +/* + * Search for <status> and return its content + */ +std::string CDAVCommon::GetStatusTag(const TiXmlElement *pElement) +{ + const TiXmlElement *pChild; + + for (pChild = pElement->FirstChildElement(); pChild != 0; pChild = pChild->NextSiblingElement()) + { + if (ValueWithoutNamespace(pChild, "status")) + { + return pChild->NoChildren() ? "" : pChild->FirstChild()->ValueStr(); + } + } + + return ""; +} + |