]> git.vomp.tv Git - jsonserver.git/commitdiff
Get channel schedule event information call
authorChris Tallon <chris@vomp.tv>
Sat, 4 May 2013 17:03:30 +0000 (18:03 +0100)
committerChris Tallon <chris@vomp.tv>
Sat, 4 May 2013 17:03:30 +0000 (18:03 +0100)
handler.c
handler.h
jsonserver.c

index 207880588eb4b6fb41b3d2028a409b6d8f7f6e4c..dcbb965a73321e9f1d628010d6f71ef5e830501f 100644 (file)
--- a/handler.c
+++ b/handler.c
@@ -74,6 +74,7 @@ int jsonserver_request_handler(struct mg_connection *conn)
   else if (!strcmp(wvrequest, "recstop")) success = jsonserver_recstop(js, postData);
   else if (!strcmp(wvrequest, "channellist")) success = jsonserver_channellist(js);
   else if (!strcmp(wvrequest, "channelschedule")) success = jsonserver_channelschedule(js, postData);
+  else if (!strcmp(wvrequest, "getscheduleevent")) success = jsonserver_getscheduleevent(js, postData);
   else if (!strcmp(wvrequest, "timerlist")) success = jsonserver_timerlist(js);
   else if (!strcmp(wvrequest, "timerdel")) success = jsonserver_timerdel(js, postData);
   else if (!strcmp(wvrequest, "timerset")) success = jsonserver_timerset(js, postData);
@@ -691,6 +692,82 @@ bool jsonserver_channelschedule(Json::Value& js, const char* postData)
   return true;
 }
 
+bool jsonserver_getscheduleevent(Json::Value& js, const char* postData)
+{
+  Log* log = Log::getInstance();
+  log->log("JSONServer", Log::DEBUG, "getscheduleevent '%s'", postData);
+  
+  char sChannelNumber[15];  int mgv1 = mg_get_var(postData, strlen(postData), "channelnumber", sChannelNumber, 15);
+  char sEventID[15];        int mgv2 = mg_get_var(postData, strlen(postData), "eventid", sEventID, 15);
+  
+  if ( (mgv1 == -1) || (mgv2 == -1) )
+  {
+    log->log("JSONServer", Log::ERR, "request mgvs: %i %i", mgv1, mgv2);
+    js["Result"] = false;
+    js["Error"] = "Bad request parameters";
+    return true;
+  }
+  
+  int channelNumber = atoi(sChannelNumber);
+  int eventID = atoi(sEventID);
+  
+  cChannel* channel = NULL;
+  for (channel = Channels.First(); channel; channel = Channels.Next(channel))
+  {
+    if (channel->GroupSep()) continue;
+    if (channel->Number() == channelNumber) break;
+  }
+  
+  if (!channel)
+  {
+    log->log("JSONServer", Log::ERR, "Could not find requested channel: %i", channelNumber);
+    js["Result"] = false;
+    js["Error"] = "Could not find channel";
+    return true;
+  }
+  
+  cSchedulesLock MutexLock;
+  const cSchedules *Schedules = cSchedules::Schedules(MutexLock);
+  if (!Schedules)
+  {
+    log->log("JSONServer", Log::ERR, "Could not find requested channel: %i", channelNumber);
+    js["Result"] = false;
+    js["Error"] = "Internal schedules error (1)";
+    return true;
+  }
+  const cSchedule *Schedule = Schedules->GetSchedule(channel->GetChannelID());
+  if (!Schedule)
+  {
+    log->log("JSONServer", Log::ERR, "Could not find requested channel: %i", channelNumber);
+    js["Result"] = false;
+    js["Error"] = "Internal schedules error (2)";
+    return true;
+  }
+  
+  cEvent* event = Schedule->GetEvent(eventID);
+  if (!event)
+  {
+    log->log("JSONServer", Log::ERR, "Could not find requested event: %i", eventID);
+    js["Result"] = false;
+    js["Error"] = "Internal schedules error (3)";
+    return true;
+  }
+  
+  Json::Value oneEvent;
+  oneEvent["ID"] = event->EventID();
+  oneEvent["Time"] = (Json::UInt)event->StartTime();
+  oneEvent["Duration"] = event->Duration();
+  oneEvent["Title"] = event->Title() ? event->Title() : "";
+  oneEvent["ShortText"] = event->ShortText() ? event->ShortText() : "";
+  oneEvent["Description"] = event->Description() ? event->Description() : "";
+  oneEvent["HasTimer"] = event->HasTimer();
+  oneEvent["RunningStatus"] = event->RunningStatus();
+
+  js["Result"] = true;
+  js["Event"] = oneEvent;
+  return true;
+}
+
 bool jsonserver_timerlist(Json::Value& js)
 {
   Log* log = Log::getInstance();
index 6cdd1ed5220319712e1474385ce2d7fa910df1ea..c54d84ce5309675b085973426ecbdf0db07b4e12 100644 (file)
--- a/handler.h
+++ b/handler.h
@@ -13,6 +13,7 @@ bool jsonserver_recmove(Json::Value& js, const char* postData);
 bool jsonserver_recstop(Json::Value& js, const char* postData);
 bool jsonserver_channellist(Json::Value& js);
 bool jsonserver_channelschedule(Json::Value& js, const char* postData);
+bool jsonserver_getscheduleevent(Json::Value& js, const char* postData);
 bool jsonserver_timerlist(Json::Value& js);
 bool jsonserver_timerdel(Json::Value& js, const char* postData);
 bool jsonserver_timerset(Json::Value& js, const char* postData);
index cd4013a55f3ae7678e413084f7f44530afa72ab0..9ee9caf8f241ae5ab79d0be8f2532f57a50b513d 100644 (file)
@@ -100,7 +100,7 @@ bool cPluginJsonserver::Start(void)
   char* configFile;
   asprintf(&configFile, "%s/jsonserver.conf", configDir);
 
-  dsyslog(configFile);
+  dsyslog("%s", configFile);
   
   log = new Log();