JSONRPC: Migration of System
authormontellese <montellese@xbmc.org>
Mon, 7 Feb 2011 15:55:45 +0000 (16:55 +0100)
committermontellese <montellese@xbmc.org>
Fri, 1 Apr 2011 18:38:29 +0000 (20:38 +0200)
xbmc/interfaces/json-rpc/JSONRPC.cpp
xbmc/interfaces/json-rpc/ServiceDescription.h
xbmc/interfaces/json-rpc/SystemOperations.cpp

index 16afd1f..423ed75 100644 (file)
@@ -142,12 +142,12 @@ JsonRpcMethodMap CJSONRPC::m_methodMaps[] = {
   // TODO
 
 // System operations
-//  { "System.Shutdown",                              CSystemOperations::Shutdown },
-//  { "System.Suspend",                               CSystemOperations::Suspend },
-//  { "System.Hibernate",                             CSystemOperations::Hibernate },
-//  { "System.Reboot",                                CSystemOperations::Reboot },
-//  { "System.GetInfoLabels",                         CSystemOperations::GetInfoLabels },
-//  { "System.GetInfoBooleans",                       CSystemOperations::GetInfoBooleans },
+  { "System.Shutdown",                              CSystemOperations::Shutdown },
+  { "System.Suspend",                               CSystemOperations::Suspend },
+  { "System.Hibernate",                             CSystemOperations::Hibernate },
+  { "System.Reboot",                                CSystemOperations::Reboot },
+  { "System.GetInfoLabels",                         CSystemOperations::GetInfoLabels },
+  { "System.GetInfoBooleans",                       CSystemOperations::GetInfoBooleans },
 
 // XBMC operations
 //  { "XBMC.GetVolume",                               CXBMCOperations::GetVolume },
index 7bc2d7e..ba10ad7 100644 (file)
@@ -559,6 +559,71 @@ namespace JSONRPC
         "\"statechanging\": true,"
         "\"params\": [],"
         "\"returns\": \"string\""
+    "},"
+
+    "\"System.Shutdown\": {"
+        "\"type\": \"method\","
+        "\"description\": \"Shuts the system running XBMC down\","
+        "\"transport\": \"Response\","
+        "\"permission\": \"ControlPower\","
+        "\"statechanging\": false,"
+        "\"params\": [],"
+        "\"returns\": \"string\""
+    "},"
+    "\"System.Suspend\": {"
+        "\"type\": \"method\","
+        "\"description\": \"Suspends the system running XBMC\","
+        "\"transport\": \"Response\","
+        "\"permission\": \"ControlPower\","
+        "\"statechanging\": false,"
+        "\"params\": [],"
+        "\"returns\": \"string\""
+    "},"
+    "\"System.Hibernate\": {"
+        "\"type\": \"method\","
+        "\"description\": \"Puts the system running XBMC into hibernate mode\","
+        "\"transport\": \"Response\","
+        "\"permission\": \"ControlPower\","
+        "\"statechanging\": false,"
+        "\"params\": [],"
+        "\"returns\": \"string\""
+    "},"
+    "\"System.Reboot\": {"
+        "\"type\": \"method\","
+        "\"description\": \"Reboots the system running XBMC\","
+        "\"transport\": \"Response\","
+        "\"permission\": \"ControlPower\","
+        "\"statechanging\": false,"
+        "\"params\": [],"
+        "\"returns\": \"string\""
+    "},"
+    "\"System.GetInfoLabels\": {"
+        "\"type\": \"method\","
+        "\"description\": \"Retrieve info labels about the system\","
+        "\"transport\": \"Response\","
+        "\"permission\": \"ReadData\","
+        "\"statechanging\": false,"
+        "\"params\": ["
+            "{ \"name\": \"labels\", \"type\": \"array\", \"required\": true, \"items\": { \"type\": \"string\" }, \"minItems\": 1, \"description\": \"See http://wiki.xbmc.org/index.php?title=InfoLabels for a list of possible info labels\" }"
+        "],"
+        "\"returns\": {"
+            "\"type\": \"object\","
+            "\"description\": \"List of key-value pairs of the retrieved info labels\""
+        "}"
+    "},"
+    "\"System.GetInfoBooleans\": {"
+        "\"type\": \"method\","
+        "\"description\": \"Retrieve info booleans about the system\","
+        "\"transport\": \"Response\","
+        "\"permission\": \"ReadData\","
+        "\"statechanging\": false,"
+        "\"params\": ["
+            "{ \"name\": \"booleans\", \"type\": \"array\", \"required\": true, \"items\": { \"type\": \"string\" }, \"minItems\": 1, \"description\": \"\" }"
+        "],"
+        "\"returns\": {"
+            "\"type\": \"object\","
+            "\"description\": \"List of key-value pairs of the retrieved info booleans\""
+        "}"
     "}"
   "}";
 
index f6f4a34..928bd7a 100644 (file)
@@ -72,20 +72,14 @@ JSON_STATUS CSystemOperations::Reboot(const CStdString &method, ITransportLayer
 
 JSON_STATUS CSystemOperations::GetInfoLabels(const CStdString &method, ITransportLayer *transport, IClient *client, const Value &parameterObject, Value &result)
 {
-  if (!parameterObject.isArray())
-    return InvalidParams;
-
   std::vector<CStdString> info;
 
-  for (unsigned int i = 0; i < parameterObject.size(); i++)
+  for (unsigned int i = 0; i < parameterObject["labels"].size(); i++)
   {
-    if (!parameterObject[i].isString())
-      continue;
-
-    CStdString field = parameterObject[i].asString();
+   CStdString field = parameterObject["labels"][i].asString();
     field = field.ToLower();
 
-    info.push_back(parameterObject[i].asString());
+    info.push_back(parameterObject["labels"][i].asString());
   }
 
   if (info.size() > 0)
@@ -104,35 +98,29 @@ JSON_STATUS CSystemOperations::GetInfoLabels(const CStdString &method, ITranspor
 
 JSON_STATUS CSystemOperations::GetInfoBooleans(const CStdString &method, ITransportLayer *transport, IClient *client, const Value &parameterObject, Value &result)
 {
-  if (!parameterObject.isArray())
-    return InvalidParams;
-
   std::vector<CStdString> info;
 
   bool CanControlPower = (client->GetPermissionFlags() & ControlPower) > 0;
 
-  for (unsigned int i = 0; i < parameterObject.size(); i++)
+  for (unsigned int i = 0; i < parameterObject["booleans"].size(); i++)
   {
-    if (!parameterObject[i].isString())
-      continue;
-
-    CStdString field = parameterObject[i].asString();
+    CStdString field = parameterObject["booleans"][i].asString();
     field = field.ToLower();
 
     // Need to override power management of whats in infomanager since jsonrpc
     // have a security layer aswell.
     if (field.Equals("system.canshutdown"))
-      result[parameterObject[i].asString()] = (g_powerManager.CanPowerdown() && CanControlPower);
+      result[parameterObject["booleans"][i].asString()] = (g_powerManager.CanPowerdown() && CanControlPower);
     else if (field.Equals("system.canpowerdown"))
-      result[parameterObject[i].asString()] = (g_powerManager.CanPowerdown() && CanControlPower);
+      result[parameterObject["booleans"][i].asString()] = (g_powerManager.CanPowerdown() && CanControlPower);
     else if (field.Equals("system.cansuspend"))
-      result[parameterObject[i].asString()] = (g_powerManager.CanSuspend() && CanControlPower);
+      result[parameterObject["booleans"][i].asString()] = (g_powerManager.CanSuspend() && CanControlPower);
     else if (field.Equals("system.canhibernate"))
-      result[parameterObject[i].asString()] = (g_powerManager.CanHibernate() && CanControlPower);
+      result[parameterObject["booleans"][i].asString()] = (g_powerManager.CanHibernate() && CanControlPower);
     else if (field.Equals("system.canreboot"))
-      result[parameterObject[i].asString()] = (g_powerManager.CanReboot() && CanControlPower);
+      result[parameterObject["booleans"][i].asString()] = (g_powerManager.CanReboot() && CanControlPower);
     else
-      info.push_back(parameterObject[i].asString());
+      info.push_back(parameterObject["booleans"][i].asString());
   }
 
   if (info.size() > 0)