summaryrefslogtreecommitdiffstats
path: root/xbmc/filesystem/DAVCommon.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--xbmc/filesystem/DAVCommon.cpp73
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 "";
+}
+