// 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 },
"\"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\""
+ "}"
"}"
"}";
JSON_STATUS CSystemOperations::GetInfoLabels(const CStdString &method, ITransportLayer *transport, IClient *client, const Value ¶meterObject, 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)
JSON_STATUS CSystemOperations::GetInfoBooleans(const CStdString &method, ITransportLayer *transport, IClient *client, const Value ¶meterObject, 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)