summaryrefslogtreecommitdiff
path: root/device.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'device.cpp')
-rw-r--r--device.cpp62
1 files changed, 62 insertions, 0 deletions
diff --git a/device.cpp b/device.cpp
new file mode 100644
index 0000000..8acf688
--- /dev/null
+++ b/device.cpp
@@ -0,0 +1,62 @@
+#include "device.h"
+
+namespace plexclient
+{
+
+Connection::Connection(Poco::XML::Node* pNode, Device* parent)
+{
+ m_pParent = parent;
+
+ NodeIterator it(pNode, Poco::XML::NodeFilter::SHOW_ALL);
+ Poco::XML::Node* pChildNode = it.nextNode();
+
+ while(pChildNode) {
+ if(Poco::icompare(pChildNode->nodeName(), "Connection") == 0) {
+ Poco::XML::AutoPtr<Poco::XML::NamedNodeMap> pAttribs = pChildNode->attributes();
+
+ m_sProtocol = GetNodeValue(pAttribs->getNamedItem("protocol"));
+ m_sAddress = GetNodeValue(pAttribs->getNamedItem("address"));
+ m_iPort = GetNodeValueAsInt(pAttribs->getNamedItem("port"));
+ m_sUri = GetNodeValue(pAttribs->getNamedItem("uri"));
+ m_bLocal = GetNodeValueAsBool(pAttribs->getNamedItem("local"));
+
+ pAttribs->release();
+ }
+ pChildNode = it.nextNode();
+ }
+}
+
+Device::Device(Poco::XML::Node* pNode, MediaContainer* parent)
+{
+ m_pParent = parent;
+
+ NodeIterator it(pNode, Poco::XML::NodeFilter::SHOW_ALL);
+ Poco::XML::Node* pChildNode = it.nextNode();
+ std::cout << "Found Device ";
+
+ while(pChildNode) {
+ if(Poco::icompare(pChildNode->nodeName(), "Device") == 0) {
+ Poco::XML::AutoPtr<Poco::XML::NamedNodeMap> pAttribs = pChildNode->attributes();
+
+ m_sName = GetNodeValue(pAttribs->getNamedItem("name"));
+ m_sProduct = GetNodeValue(pAttribs->getNamedItem("product"));
+ m_sProvides = GetNodeValue(pAttribs->getNamedItem("provides"));
+ m_sClientIdentifier = GetNodeValue(pAttribs->getNamedItem("clientIdentifier"));
+ m_bOwned = GetNodeValueAsBool(pAttribs->getNamedItem("owned"));
+ m_sAccessToken = GetNodeValue(pAttribs->getNamedItem("accessToken"));
+ m_bHttpsRequired = GetNodeValueAsBool(pAttribs->getNamedItem("httpsRequired"));
+ m_bPublicAddressMatches = GetNodeValueAsBool(pAttribs->getNamedItem("publicAddressMatches"));
+ m_bPresence = GetNodeValueAsBool(pAttribs->getNamedItem("presence"));
+ m_sSourceTitle = GetNodeValue(pAttribs->getNamedItem("sourceTitle"));
+
+ pAttribs->release();
+ } else if(Poco::icompare(pChildNode->nodeName(), "Connection") == 0) {
+ m_vConnections.push_back(Connection(pChildNode, this));
+ }
+
+ pChildNode = it.nextNode();
+ }
+}
+
+
+}