jsonrpc: add VideoLibrary.GetSeasonDetails
authormontellese <montellese@xbmc.org>
Tue, 29 Oct 2013 14:14:34 +0000 (15:14 +0100)
committermontellese <montellese@xbmc.org>
Sun, 3 Nov 2013 10:13:04 +0000 (11:13 +0100)
xbmc/interfaces/json-rpc/JSONServiceDescription.cpp
xbmc/interfaces/json-rpc/ServiceDescription.h
xbmc/interfaces/json-rpc/VideoLibrary.cpp
xbmc/interfaces/json-rpc/VideoLibrary.h
xbmc/interfaces/json-rpc/methods.json

index 2bdc02c..501bbc0 100644 (file)
@@ -125,6 +125,7 @@ JsonRpcMethodMap CJSONServiceDescription::m_methodMaps[] = {
   { "VideoLibrary.GetTVShows",                      CVideoLibrary::GetTVShows },
   { "VideoLibrary.GetTVShowDetails",                CVideoLibrary::GetTVShowDetails },
   { "VideoLibrary.GetSeasons",                      CVideoLibrary::GetSeasons },
+  { "VideoLibrary.GetSeasonDetails",                CVideoLibrary::GetSeasonDetails },
   { "VideoLibrary.GetEpisodes",                     CVideoLibrary::GetEpisodes },
   { "VideoLibrary.GetEpisodeDetails",               CVideoLibrary::GetEpisodeDetails },
   { "VideoLibrary.GetMusicVideos",                  CVideoLibrary::GetMusicVideos },
index e406018..2f7147f 100644 (file)
@@ -2466,6 +2466,21 @@ namespace JSONRPC
         "}"
       "}"
     "}",
+    "\"VideoLibrary.GetSeasonDetails\": {"
+      "\"type\": \"method\","
+      "\"description\": \"Retrieve details about a specific tv show season\","
+      "\"transport\": \"Response\","
+      "\"permission\": \"ReadData\","
+      "\"params\": ["
+        "{ \"name\": \"seasonid\", \"$ref\": \"Library.Id\", \"required\": true },"
+        "{ \"name\": \"properties\", \"$ref\": \"Video.Fields.Season\" }"
+      "],"
+      "\"returns\": { \"type\": \"object\","
+        "\"properties\": {"
+          "\"seasondetails\": { \"$ref\": \"Video.Details.Season\" }"
+        "}"
+      "}"
+    "}",
     "\"VideoLibrary.GetEpisodes\": {"
       "\"type\": \"method\","
       "\"description\": \"Retrieve all tv show episodes\","
index fc314b7..b6eec82 100644 (file)
@@ -232,6 +232,24 @@ JSONRPC_STATUS CVideoLibrary::GetSeasons(const CStdString &method, ITransportLay
   return OK;
 }
 
+JSONRPC_STATUS CVideoLibrary::GetSeasonDetails(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result)
+{
+  CVideoDatabase videodatabase;
+  if (!videodatabase.Open())
+    return InternalError;
+
+  int id = (int)parameterObject["seasonid"].asInteger();
+
+  CVideoInfoTag infos;
+  if (!videodatabase.GetSeasonInfo(id, infos) ||
+      infos.m_iDbId <= 0 || infos.m_iIdShow <= 0)
+    return InvalidParams;
+  
+  CFileItemPtr pItem = CFileItemPtr(new CFileItem(infos));
+  HandleFileItem("seasonid", false, "seasondetails", pItem, parameterObject, parameterObject["properties"], result, false);
+  return OK;
+}
+
 JSONRPC_STATUS CVideoLibrary::GetEpisodes(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result)
 {
   CVideoDatabase videodatabase;
index 3352c3a..e9e8911 100644 (file)
@@ -39,6 +39,7 @@ namespace JSONRPC
     static JSONRPC_STATUS GetTVShows(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);
     static JSONRPC_STATUS GetTVShowDetails(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);
     static JSONRPC_STATUS GetSeasons(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);
+    static JSONRPC_STATUS GetSeasonDetails(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);
     static JSONRPC_STATUS GetEpisodes(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);
     static JSONRPC_STATUS GetEpisodeDetails(const CStdString &method, ITransportLayer *transport, IClient *client, const CVariant &parameterObject, CVariant &result);
 
index 1595fa9..e416833 100644 (file)
       }
     }
   },
+  "VideoLibrary.GetSeasonDetails": {
+    "type": "method",
+    "description": "Retrieve details about a specific tv show season",
+    "transport": "Response",
+    "permission": "ReadData",
+    "params": [
+      { "name": "seasonid", "$ref": "Library.Id", "required": true },
+      { "name": "properties", "$ref": "Video.Fields.Season" }
+    ],
+    "returns": { "type": "object",
+      "properties": {
+        "seasondetails": { "$ref": "Video.Details.Season" }
+      }
+    }
+  },
   "VideoLibrary.GetEpisodes": {
     "type": "method",
     "description": "Retrieve all tv show episodes",