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);
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();