upnp: refactor containers addition
authorThomas Guillem <thomas@gllm.fr>
Tue, 3 May 2016 11:44:05 +0000 (13:44 +0200)
committerThomas Guillem <thomas@gllm.fr>
Thu, 19 May 2016 13:55:27 +0000 (15:55 +0200)
And rename addItem to addContainer.

modules/services_discovery/upnp.cpp
modules/services_discovery/upnp.hpp

index 122c378..02ca710 100644 (file)
@@ -775,20 +775,29 @@ MediaServer::~MediaServer()
     free( psz_root_ );
 }
 
-void MediaServer::addItem(const char *objectID, const char *title )
+bool MediaServer::addContainer( IXML_Element* containerElement )
 {
     char* psz_url;
 
+    const char* objectID = ixmlElement_getAttribute( containerElement, "id" );
+    if ( !objectID )
+        return false;
+
+    const char* title = xml_getChildElementValue( containerElement, "dc:title" );
+    if ( !title )
+        return false;
+
     if( asprintf( &psz_url, "upnp://%s?ObjectID=%s", psz_root_, objectID ) < 0 )
-        return;
+        return false;
 
     input_item_t* p_item = input_item_NewDirectory( psz_url, title, ITEM_NET );
     free( psz_url);
     if ( !p_item )
-        return;
+        return false;
     input_item_CopyOptions( p_item, node_->p_item );
     input_item_node_AppendItem( node_, p_item );
     input_item_Release( p_item );
+    return true;
 }
 
 int MediaServer::sendActionCb( Upnp_EventType eventType,
@@ -944,20 +953,7 @@ bool MediaServer::fetchContents()
     if ( containerNodeList )
     {
         for ( unsigned int i = 0; i < ixmlNodeList_length( containerNodeList ); i++ )
-        {
-            IXML_Element* containerElement = (IXML_Element*)ixmlNodeList_item( containerNodeList, i );
-
-            const char* objectID = ixmlElement_getAttribute( containerElement,
-                                                             "id" );
-            if ( !objectID )
-                continue;
-
-            const char* title = xml_getChildElementValue( containerElement,
-                                                          "dc:title" );
-            if ( !title )
-                continue;
-            addItem(objectID, title);
-        }
+            addContainer( (IXML_Element*)ixmlNodeList_item( containerNodeList, i ) );
         ixmlNodeList_free( containerNodeList );
     }
 
index 26593d0..a1cfa97 100644 (file)
@@ -149,7 +149,7 @@ private:
     MediaServer(const MediaServer&);
     MediaServer& operator=(const MediaServer&);
 
-    void addItem(const char* objectID, const char* title);
+    bool addContainer( IXML_Element* containerElement );
 
     IXML_Document* _browseAction(const char*, const char*,
             const char*, const char*, const char* );